离子-呼叫2个订阅功能,然后等到它们完成

时间:2018-07-22 16:57:00

标签: angular ionic-framework subscribe

我正在使用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'类型的参数。

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

this.getPayMethodsthis.getExpenses均未返回其可观察值,这就是您看到该错误的原因。

尝试以下方法:

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