使用 RxJava2 定期发送相同的请求

Periodically sending the same request with RxJava2

所以,我有一个 API 调用,其中 return 是一个狗品种列表, 另一个调用采用 dogBreedIds 并为每个品种 ID 获取狗名。 在 onNext 中,我将这些狗的名字添加到一个列表中, 在 doOnComplete 中,我将它们显示在回收站视图中。

getDogBreedsgetDogNames return 一个 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 秒一次,然后将响应列表与我的第一个响应进行比较如果响应列表有差异,则显示给用户(这部分可能无关紧要)

我试过使用Observable.interval(),但是我没能成功。我检查了很多例子都没有成功。

如果我应该提供更多相关信息,请告诉我。 谢谢!

你可以像这样进行间隔:

Observable.interval(0, 60, TimeUnit.SECONDS)
                .flatMap {
                    petsRepository.getDogBreeds()
                }.map {...}

其余的应该几乎保持不变。

至于显示部分 - 我假设您正在使用 RecyclerView(如果不是请纠正我)。如果是,则使用 ListAdapter,DiffUtils 将处理显示列表中的差异。

希望对您有所帮助!