Angular 2 (4) 如何管理多个异步调用的响应
Angular 2 (4) What's the way to manage response for multiple async calls
我有一个简单的问题,如何管理同步异步调用的响应?
解释:我有一个数组 json 的循环和打字稿,我在每次迭代中调用一个回环 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]);
});
谢谢。
您可以创建一个数组字段,然后在循环时推送可观察对象。然后在 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]);
});
我有一个简单的问题,如何管理同步异步调用的响应?
解释:我有一个数组 json 的循环和打字稿,我在每次迭代中调用一个回环 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]);
});
谢谢。
您可以创建一个数组字段,然后在循环时推送可观察对象。然后在 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]);
});