我正在使用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'类型的参数。
最好的方法是什么?
答案 0 :(得分:1)
this.getPayMethods
和this.getExpenses
均未返回其可观察值,这就是您看到该错误的原因。
尝试以下方法:
Observable.forkJoin(
this.api.getPayMethods(),
this.api.getExpenses()
).subscribe(_ => this.extendPayMethodData())