HTTP 요청을 반복적으로 만들고 결과에 대한 작업을 수행하려고합니다. 나는 public Observable<NewsItem> fetchItems(NewsFeed feed)
으로 시작합니다. 하나의 요청은 몇 가지 뉴스 항목을 가져 오지만 나는 그것을 평평하게하기로 결정했습니다.Java RX를 사용하여 비동기 작업을 체인화하는 방법 Observable?
아이디어는 Observable.interval()
을 여러 번 요청한 다음 결과 Observables를 하나로 결합하는 것이 었습니다.
Observable
.interval(timePerItem, TimeUnit.MILLISECONDS)
.map(i -> feed)
.map(feed -> fetchItems(feed))
.subscribe(result -> System.out.println(result));
그러나 결과는 Observable<Observable<NewsItem>>
하지 Observable<NewsItem>
입니다. 어떻게 그들을 마하?
marge() 연산자 (RX-Java doc: Marge)을 찾았습니다. 하지만 유스 케이스에 맞지 않는 것 같습니다.
이전 버전에서는 CompletableFuture<List<NewsItem>> fetchNewsItems()
을 사용했지만 Observable 체인에 맞지 않았습니다.
내가 찾고있는 것 같습니다. https://github.com/ReactiveX/RxJava/wiki에서 rx-java를 배우는 것은 어렵습니다. flatMap은 소개에서 언급하지 않았으며 https://github.com/ReactiveX/RxJava/wiki/Transforming-Observables#flatmap-concatmap-and-flatmapiterable에 설명 된 방식이 이상합니다. 고맙습니다! – atok
http://reactivex.io/tutorials.html에는 훌륭한 자습서 링크가 많이 있습니다. 아직 거기에 언급되지 않은 좋은 안내서를 찾거나 직접 작성한 경우 https://github.com/ReactiveX/reactivex.github.io에서 당겨서 해당 페이지에 링크가 포함되도록 요청하십시오.) –