angular - Ionic - 调用 2 个订阅函数并等待它们完成
问题描述
我正在使用 Ionic 构建一个移动应用程序。其中我有 2 个可以同时运行的 API 调用,在它们都完成后,我需要根据第一个响应中的数据更改第二个响应中的数据。所以我需要确保当我运行第三个函数(操作数据)时,是在两个 API 调用都完成之后。
API 调用 1:
getExpenses() {
this.api.getExpenses().subscribe(response => {
this.expenses = response;
});
}
API 调用 2:
getPayMethods() {
this.api.getPayMethods().subscribe(response => {
this.methods = response;
});
}
操作数据的函数:
extendPayMethodData(){
modifyData();
}
在constructor
我运行:
this.getPayMethods();
this.getExpenses();
this.extendPayMethodData();
但这不起作用,因为何时extendPayMethodData
调用其他函数尚未完成。我曾尝试使用:
Observable.forkJoin(
this.getPayMethods(),
this.getExpenses()
).subscribe(_ => this.extendPayMethodData())
但后来我得到这个错误:
错误:(26, 7) TS2345:“void”类型的参数不可分配给“SubscribableOrPromise”类型的参数。
最好的方法应该是什么?
解决方案
既不this.getPayMethods
也不this.getExpenses
返回他们的可观察值,这就是您看到该错误的原因。
试试这个:
Observable.forkJoin(
this.api.getPayMethods(),
this.api.getExpenses()
).subscribe(_ => this.extendPayMethodData())
推荐阅读
- ms-access - 通过 MS Access 更新雪花表?
- r - 将 for 循环迭代包含到 R 中的数据帧中
- javascript - 如何在charts.js的饼图工具提示中添加千位分隔符
- python - AADSTS50011:请求中指定的回复 URL 与为应用程序 Python 配置的回复 URL 不匹配
- azure-devops - TFS 2015 到 Azure DevOps 服务的迁移
- php - 当在分页页面中按更新时,我再次回到第一页
- web-scraping - ETL - 如何进入网站,输入一些参数并将文件(或网络数据)导出到数据库
- elasticsearch - ElasticSearch 路径层次分词器聚合
- next.js - TypeError: Invalid PostCSS Plugin found at: plugins[0]
- spring-boot - Zuul 反向代理和 Spring Boot 管理配置