链接可观察物,但听第二可观察物的变化

时间:2020-03-11 12:07:43

标签: javascript angular rxjs reactive-programming

我正在传送两个可观察物

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

答案 0 :(得分:2)

您可以使用combineLatest

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

现在,每次更改obs1$selectedDate$时,都会触发订阅。

但是请记住,这仅在两个可观察值都发出至少一个值时才有效。如果您想确保即使根本不确定this.obs1$也会被触发,则可以使用startWith管道将其链接,这将确保发出一个值。

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