首页 > 解决方案 > 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”类型的参数。

最好的方法应该是什么?

标签: angularionic-frameworksubscribe

解决方案


既不this.getPayMethods也不this.getExpenses返回他们的可观察值,这就是您看到该错误的原因。

试试这个:

Observable.forkJoin(
    this.api.getPayMethods(),
    this.api.getExpenses()
).subscribe(_ => this.extendPayMethodData())

推荐阅读