因此,我有一个API调用,它返回了Dog品种的列表,
另一个调用则使用dogBreedIds
,并为每个品种ID提取狗名。
在onNext
中,我将这些狗名添加到列表中,
然后在doOnComplete
中,将它们显示在回收站视图中。
getDogBreeds
和getDogNames
都返回Observable<List>
是我通过以下方式完成此操作的rx链的示例:
petsRepository.getDogBreeds()
.map { breeds ->
breeds.items.map {
it.id
}
}
.flatMapIterable { listOfIds -> listOfIds }
.flatMap { dogId -> getDogNames(dogId) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete { displayDogNames() }
.subscribe(this::onDogNamesLoaded, this::onError)
我想做的是,每60秒重新触发整个过程,每60秒一次,然后将响应列表与我的第一个响应进行比较,并将其显示在用户,如果响应列表具有差异(这部分可能不相关)
我尝试使用Observable.interval()
,但是我无法成功执行此操作。我检查了很多例子,但都没有成功。
如果要提供更多信息,请告诉我。 谢谢!
答案 0 :(得分:3)
您可以像这样间隔一下:
Observable.interval(0, 60, TimeUnit.SECONDS)
.flatMap {
petsRepository.getDogBreeds()
}.map {...}
其余应保持几乎相同。
至于显示部分-我将假设您正在使用RecyclerView(如果没有,请纠正我)。如果是这样,则使用ListAdapter,DiffUtils将处理显示列表中的差异。
希望这会有所帮助!