我有两个Retrofit请求A和B,其中一个取决于另一个,
A
null
乙
public Observable<List<Image>> getImages(double count) {
return mService.getImages(count);
}
第二个请求 B 采用imageId参数,我可以通过image.getId()
获取该参数我需要做的就是:
如何使用Rxjava
实现这样的目标答案 0 :(得分:0)
这是您的解决方案,如果您有任何疑问,请随时提出。
Observable<List<TheImage>> listObservable = getImages(20)
.flatMapIterable(images -> images) // gets individual image
.flatMap(image -> getImageDetails(image.getId()) // gets image details
.map(imageDetails -> new TheImage(image, imageDetails))) // creates new object TheImage
.toList(); // collects it to list
如果您在flatMap中订阅内部observable,则可以对getImageDetails进行并行调用:
.flatMap(image -> getImageDetails(image.getId())
.map(imageDetails -> new TheImage(image, imageDetails))
.subscribeOn(Schedulers.io()), maxConcurrent)