Как дождаться завершения первого наблюдаемого объекта перед параллельным выполнением других с использованием RxJS

#angular #rxjs #observable

#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:

Вы должны использовать 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. Привет, Александр, в вашем примере отсутствуют некоторые фигурные скобки, но в остальном все сработало просто замечательно! Спасибо