我正在调用两个服务:
myfirstService.getCollections().subscribe(collection => myCollection = collection);
mysecondService.getCollectionId().subscribe(id => myId = id);
现在我需要根据 Id 从集合中获取项目,就像这样
mycollection.find(x => x.id == myId);
当然这应该在我得到collections和id之后再做。
Collection 和 Id 显示在 UI 中,所以我不想在另一个内部调用一个,我也不想等到两者都完成,因为我需要在交付后立即使用 collections 和 id。
只有在所有调用完成后才能获取对象。
最佳答案
您可以使用 tap
将发出的值分配给全局变量,只要您得到它。然后同时执行两个 Observables 并等待它们用 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))
关于angular - 在两个 Observable 完成后做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902367/