Наблюдаемые цепочки, но слушайте вторые наблюдаемые изменения - PullRequest
0 голосов
/ 11 марта 2020

Я передаю две наблюдаемые

this.obs1$
  .pipe(
    skip(1),
    mergeMap(schedules => {
      this.schedules=schedules
      for (let elm in schedules) {
        ....
      }
      return this.selectedDate$;
    })
  )
  .subscribe(selectedDate => {
   ....

проблема в том, что подписка не отправляет данные, если Obs1$ не запущен.

Что бы я хотел получить selectedDate$ значения, даже когда Obs1$ не изменяется, но selectedDate$ должно выполняться всегда после Obs1$

1 Ответ

2 голосов
/ 11 марта 2020

Вы можете использовать combineLatest.

combineLatest([
    this.obs1$,
    this.selectedDate$
]).subscribe(([obs1Value, selectedDate]) => {...})

Теперь каждый раз, когда obs1$ или selectedDate$ изменяется, это вызывает подписку.

Но имейте в виду, что это будет работает, только если обе наблюдаемые величины излучают хотя бы одно значение. Если вы хотите убедиться, что подписка сработает, даже если вы не уверены, что this.obs1$ сработает вообще, вы можете связать ее с startWith каналом, который обеспечит выдачу одного значения.

this.obs1$.pipe(startWith('defaultValue'))
...