0

간단한 질문이 있습니다. 동시 비동기 호출에 대한 응답을 어떻게 관리 할 수 ​​있습니까? I는 타이프로 배열 JSON의 루프를 가지며, I는 각 반복에서 루프백 API 광고 호출 :각도 2 (4) 여러 비동기 호출에 대한 응답을 관리하는 방법은 무엇입니까

설명

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]); 
}); 

감사합니다.

답변

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]); 
}); 
+0

감사 echonax 내부에이 필드를 사용! – Rodrigo

+1

완벽하게 작동합니다! 감사합니다 echonax !!! – Rodrigo