getAllSubModules에 가입하면 forkJoin은 모든 observables를 오류없이 실행하지만 완료되지 않습니다. 나는 forkJoin이 모든 관측 값을 완료 한 후에 만 완료한다는 것을 알고 있지만, 모든 내용이 성공적임을 확인하는 콘솔에서 '-----'3 번을 볼 수 있습니다. RxJS forkJoin이 완료되지 않음
getSubmodules(id): Observable<any> {
return this.authService.getToken()
.flatMap((token) => this.http.get(`${this.URL}/ROS/applications/modules/${id}/subModules?token=${token}`))
.map((res: any) => res.data.map((subModule) => this.mapSubModules(subModule)));
}
getAllSubmodules(): Observable<any> {
const tasks = [];
this.modules.forEach((module: AppModule) => {
const obs = this.getSubmodules(module.id).map((subModules) => {
this.allSubModules[module.id] = subModules;
console.log('--------------------');
});
tasks.push(obs);
});
return Observable.forkJoin(...tasks).retry(2);
}
mapSubModules(moduleData) {
if (moduleData.id) {
const subModule = <SubModule> {
id: moduleData.id,
parentId: moduleData.parentId,
typeId: moduleData.typeId,
name: moduleData.name.az,
active: true
};
return subModule;
}
}
이 코드
은 forkJoin 사용할 때 실행되지 않습니다 :this.universityService.getAllSubmodules().subscribe(() => {
// --- Below is not executed!--
console.log('subModules in Report Co');
console.log(this.universityService.allSubModules);
this.checkUrl();
this.showChild = true;
}, (er) => console.log(er));
을하지만 대신 forkJoin의 combineLatest를 사용할 때 예상대로 작동합니다. 그래서 문제가 무엇입니까? 누군가 조언을하기를 바랍니다.
리턴 값이없는 맵 호출, 유형 부족, mapSubmodules 메소드의 모호한 정의 (리턴 유형 void 또는 SubModule) 등 많은 문제가 여기에 있습니다. –