0

我有一个简单的问题,如何管理同时异步调用的响应?

说明:我有一个带有 typescript 的数组 json 循环,我在每次迭代中调用一个 Loopback Api:

for (var i = 0; i < data.length; ++i) {
    this.dataApi.patchOrCreate(data[i]).subscribe((resp: any)=> {
        console.log(resp);
    }, (err: any)=>{
        console.log('ERR',err);
    });
}

问题在于每个呼叫的响应。如果所有响应都正常,我想关闭模式。我怎样才能做到这一点?

我尝试使用Observable.forkJoin,但问题是调用次数是动态的:

Observable.forkJoin(
    this.dataApi.patchOrCreate(data[0]),
    this.dataApi.patchOrCreate(data[1]),
    this.dataApi.patchOrCreate(data[2]),
).subscribe(result => {
    //Close modal
    console.log('response',result[0],result[1]);
});

谢谢。

4

1 回答 1

1

您可以创建一个数组字段,然后在循环时推送 observables。然后在里面使用这个字段forkJoin

myObservables = [];

constructor(...)
...

for (var i = 0; i < data.length; ++i) {
    this.myObservables.push(this.dataApi.patchOrCreate(data[i]));
}
...
Observable.forkJoin(
    this.myObservables
).subscribe(result => {
    //Close modal
    console.log('response',result[0],result[1]);
});
于 2017-04-11T16:18:40.533 回答