Использовать комбинироватьПоследний, когда вторая наблюдаемая зависит от первой - PullRequest
0 голосов
/ 03 октября 2019

Я только вхожу в rxjs и в настоящее время изучаю комбинат последних. Я понял, что он объединяет несколько наблюдаемых в одну. Я задаюсь вопросом, возможно ли по-прежнему использовать combLatest, когда моя вторая наблюдаемая зависит от значения первой.

Например, мой первый звонок даст мне идентификатор пользователя. Затем мне нужно передать этот идентификатор пользователя во второй вызов. Можно ли в этой ситуации использовать combLatest?

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Быстрый ответ: нет - объединение будет выдавать значение только после того, как все наблюдаемые издадут хотя бы один раз. В вашем случае вы можете использовать:

http.get('/my-url-for-id').pipe(
  flatMap(response => this.http.post('/some-other-url', response.id))
)

, второй http GET будет выполнен после первого.

Если вы хотите вернуть оба результата первого вызова И второйВо-первых, вы действительно можете использовать combineLatest, например:

this.http.get('/id').pipe(
  flatMap(response => combineLatest(
    [
      of(response.id),
      this.http.post('/some-other-url', response.id)
    ]
  )
)

Полученная наблюдаемая будет иметь тип Observable<[string, {}]>, где {} - это тип второго post запроса

0 голосов
/ 03 октября 2019

Нет. Вы не можете использовать объединениеПоследний, когда два наблюдаемых зависят друг от друга. Сценарий, который вы объяснили, может быть обработан switchMap. Он возьмет значение первой наблюдаемой и подпишется на второй наблюдаемой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...