我正在管道两个可观察物

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$之后运行

最佳答案

您可以使用combineLatest

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


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

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

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

10-04 11:46