【问题标题】:Angular 2 (4) What's the way to manage response for multiple async callsAngular 2(4)管理多个异步调用响应的方法是什么
【发布时间】:2017-04-12 00:20:04
【问题描述】:

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

说明:我有一个带有 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]);
});

谢谢。

【问题讨论】:

    标签: angular typescript asynchronous loopback angular-loopback


    【解决方案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]);
    });
    

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2022-01-19
      • 2019-04-11
      相关资源
      最近更新 更多