如何在使用RxJS并行执行其他之前等待第一个Observable完成

时间:2016-10-20 21:08:14

标签: angular rxjs observable

目前,我有3个请求并行运行。现在我需要等待第一个完成,然后才能并行发射另外两个。这就是我现在所拥有的:

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 个答案:

答案 0 :(得分: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
      });
   }
}