2016-10-20 1 views
3

私は3つの要求をすべて同時に実行しています。もう一方の2つを並行して起動する前に、最初のものが終了するのを待つ必要があります。これは私が現時点で持っているものです:最初に待つ方法ObservableがRxJSを使って並列に他のものを実行する前に終了する

return Observable 
    .forkJoin(request1, request2, request3) 
    .map((successValues: boolean[]) => { 
     return successValues.every(x => x); 
    }) 
    .do(success => { 
     if (success) { 
     this.store.dispatch({ 
      type: actions.UPDATE_SUCCESS 
     }); 
    } 
}); 

答えて

1

switchMap演算子を使用してください。

request1.switchMap(response1 => { 
    Observable 
    .forkJoin(request2, request3) 
    .map((successValues: boolean[]) => { 
     return successValues.every(x => x); 
    }) 
    .do(success => { 
     if (success) { 
     this.store.dispatch({ 
      type: actions.UPDATE_SUCCESS 
     }); 
    } 
} 
+1

こんにちはアレクサンダー、あなたの例ではいくつか欠けている括弧がありますが、それ以外は魅力的でした!ありがとう – AndreFeijo