我想重复发出HTTP请求并对结果采取行动。我从public Observable<NewsItem> fetchItems(NewsFeed feed)
开始。一个请求获得了一些新闻,但我决定将其压扁。
这个想法是使用Observable.interval()
多次发出请求,然后将结果Observable合并为一个。
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链中。
答案 0 :(得分:3)
不确定我是否理解这个问题,但您不只是在寻找flatMap
吗?
Observable
.interval(timePerItem, TimeUnit.MILLISECONDS)
.flatMap(i -> fetchItems(feed))
.subscribe(result -> System.out.println(result));