angular - 等待最后一次订阅结束
问题描述
我有以下设置:
let result = service.getResults();
result.data.forEach((row:any) => {
this.myService
.getObject(row.id)
.subscribe((object:any) => {
//...
})
);
}
我想做点什么,在所有的订阅getObject(row.id)
都完成之后。我知道有这个add()
功能,但它会为每个订阅执行此操作。来自 Promise,我将存储每个 Promise,然后存储在一个数组中,然后调用 Promise.all()。
解决方案
在 getObject(row.id) 的所有订阅都完成之后,我想做点什么。
最好使用forkJoin作为您的示例。来自官方文档:
forkJoin 将等待所有传递的 Observables 完成,然后它将发出一个数组,其中包含来自相应 Observables 的最后一个值。
尝试以这种方式进行:
import { forkJoin } from 'rxjs';
const rowObjects$ = result.data.map(rd => this.myService.getObject(rd.id));
forkJoin(rowObjects$)
.subscribe((object:any) => {
//...
})
推荐阅读
- c++ - 如何将自己的opencv库与默认库与cpp程序链接起来
- python - Python 3 - 如何用列表中某个索引处的 str 替换 str
- pci - PCIe 配置空间与 ECAM
- php - 如何在其他服务器A上的php中建立数据库连接以服务器B
- mysql - 如何删除从先前插入的行在一分钟内插入的行
- sql - 列 id 上的身份无法正常工作
- reactjs - React Admin:我可以使用另一个字段
,除了“id”? - python - python中的字符串理解和转换
- javascript - angularjs:将文本与值数组匹配
- swift - 多次调用 Swift 闭包是否正确