Вернуть все результаты из цепочки наблюдаемых - PullRequest
2 голосов
/ 28 марта 2019

В моем приложении Angular я пытаюсь добиться следующего

  1. Выполнить Observable A
  2. Когда A завершится, выполните Observable B, используя результат A
  3. Когда B завершится, верните результат и A, и B

Без 3-го пункта это было бы довольно просто, я думаю, я бы что-то сделалвот так:

this.myService.getData()
  .pipe(
    flatMap(firstResult => this.myService.getMoreData(firstResult.someField))
  ).subscribe(secondResult => {
      // process the data
  });

Проблема в том, что у меня есть только доступ к secondResult в конце, но мне также нужно firstResult.

Я не экспертв наблюдаемых RxJS, так что я бы по-настоящему оценил любые советы о том, как решить эту проблему.

1 Ответ

3 голосов
/ 28 марта 2019

Вы можете просто сопоставить второй результат с массивом обоих результатов.

this.myService.getData()
  .pipe(
    concatMap(firstResult => this.myService.getMoreData(firstResult.someField).pipe(
      map(secondResult => [firstResult, secondResult]),
    ))
  ).subscribe(([first, second]) => ...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...