我有一个API,它给了我一个id列表。我需要使用这些ID来发出另一个网络请求,以获取各个项目的详细信息。一旦我得到了所有细节,我需要将它们放在一个列表中。
所以这是一个例子。提出网络请求,获取ID列表
1,2,3,4,5。
现在我需要针对这5个ID提出5个单独的请求。
然后,一旦我得到所有人的回复,我需要创建一个用于填充RecyclerView的列表。
如果需要进一步的信息,请告诉我。我是Reactive编程的新手。
答案 0 :(得分:2)
让我们说你有一个可观察的来源:
Observable<Integer> source;
您想为每个ID执行网络请求:
Long getLongFromIdViaNetwork(Integer id);
你是这样写的:
source
.flatMap( i -> Observable.fromCallable( id -> getLongFromIdViaNetwork( id ) ) )
.toList()
.subscribeOn( backgroundScheduler )
.observeOn( foregroundScheduler )
.subscribe( listOfLongs -> {} );
其中backgroundScheduler
和foregroundScheduler
适合我们的环境。
答案 1 :(得分:1)
可观察链将具有大致以下结构:
答案 2 :(得分:1)
如果您只想接收包含列表的1个发射:使用Observable.just(1, 2, 3, 4, 5);
如果您希望收到5个排放,每个排放包含一个数字:使用Observable.from(1, 2, 3, 4, 5);
答案 3 :(得分:0)
伪代码: Observable.from(listOfIds).flatMap(return request(id))。toList()