2017-11-23 11 views
1

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を使用すると、期待どおりには動作します。 何が問題なのでしょうか?

+0

戻り値のないマップ呼び出し、型の不足、mapSubmodulesメソッド(戻り値の型voidまたはSubModule)のあいまいな定義など、多くのことが間違っています。 –

答えて

3

あなたの期待は間違っています。 console.log('--------------------')が3回発射されたということは、あなたが3回のイベントを受け取ったことを意味します。onNextforkJoinは、すべての観測値が完了するのを待ちます。

個々のストリームを.do(next=>{},err=>{},complete => console.log('completed'))で見るか、ストリームが完了するときを明示的に定義する場合は、.take(1)および/または.timeout(1000)を使用してどうなるか試してみてください。

authService..getToken()は1つの値を出した後に完了しますか?

+0

ありがとうございます。テイク(1)を追加すると問題が解決しました。 authService.getToken()が完了しなかったためです。私はあなたの助けに感謝します! –

関連する問題