Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Ionic-调用2个订阅函数并等待它们完成_Angular_Ionic Framework_Subscribe - Fatal编程技术网

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

Angular Ionic-调用2个订阅函数并等待它们完成,angular,ionic-framework,subscribe,Angular,Ionic Framework,Subscribe,我正在使用Ionic构建一个移动应用程序。 其中我有两个API调用,可以同时运行,在它们都完成后,我需要根据第一个响应中的数据更改第二个响应中的数据。因此,我需要确保在运行第三个函数(操作数据)时,两个API调用都已完成 API调用1: getExpenses() { this.api.getExpenses().subscribe(response => { this.expenses = response; }); } API调用2: getPayMe

我正在使用Ionic构建一个移动应用程序。 其中我有两个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();
}
构造函数中
我运行:

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())