我正在致电两项服务:
myfirstService.getCollections().subscribe(collection => myCollection = collection);
mysecondService.getCollectionId().subscribe(id => myId = id);
现在,我需要像这样从基于ID的收藏中获取商品
mycollection.find(x => x.id == myId);
这当然应该在我获得收藏和身份证后完成。
集合和ID显示在用户界面中,所以我不想在另一个内部调用,也不想等到两者都完成之后,因为我需要在交付集合和ID后立即使用它们。>
在所有调用完成后,才应该获取对象。
答案 0 :(得分:2)
您可以使用tap
将发射的值分配给全局变量。然后同时执行两个可观察对象,并等待它们以forkJoin
完成。
forkJoin(
myfirstService.getCollections().pipe(
tap(collection => myCollection = collection)
),
mysecondService.getCollectionId().pipe(
tap(id => myId = id)
)
).subscribe(([collection, id]) => collection.find(x => x.id == id))
答案 1 :(得分:1)
尝试这样:
简单嵌套:
this.http.get(myfirstService.getCollections()).subscribe(x=> {
mysecondService.getCollectionId(x.id).subscribe(details=> {
x.details= details;
});
});;
使用Rxjs mergeMap ,
res= this.http.get(myfirstService.getCollections()).pipe(
mergeMap(x=> mysecondService.getCollectionId(x.id))
);