Ionic - 调用 2 个订阅函数并等待它们完成

Ionic - Call 2 subscribe functions and wait until they finish

我正在使用 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())

但是我得到这个错误:

Error:(26, 7) TS2345: Argument of type 'void' is not assignable to parameter of type 'SubscribableOrPromise'.

最好的方法是什么?

this.getPayMethodsthis.getExpenses return 都不是他们的可观察对象,这就是您看到该错误的原因。

试试这个:

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