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)のあいまいな定義など、多くのことが間違っています。 –