Observable.never()继续发出值

时间:2017-08-27 21:12:42

标签: rxjs

我订阅了以下Observable:

Observable
      .interval(2000)
      .withLatestFrom(this.formObservable.map(x => x.data))
      .map(x => shouldThisRun ? x[1] : Observable.never())
      .do(console.log)
      .subscribe()

当我将shouldThisRun值更改为false时,Observable会在控制台中发出以下内容:

23:09:03.967 Subscriber.js:247 NeverObservable {_isScalar: false}
23:09:05.970 Subscriber.js:247 NeverObservable {_isScalar: false}
23:09:07.973 Subscriber.js:247 NeverObservable {_isScalar: false}
23:09:09.977 Subscriber.js:247 NeverObservable {_isScalar: false}
23:09:11.980 Subscriber.js:247 NeverObservable {_isScalar: false}

我不希望它发出任何东西。我不明白为什么它不会停止发光。

1 个答案:

答案 0 :(得分:1)

您正在将Observable映射到Observable的Observable。外部的观察者不断发出,这就是你所订阅的。你真正想要的是每次外部发出时不断切换到最新的内部(切换意义:订阅新的并取消订阅旧的)。那是 switchMap为您做什么。查看switchMap的大理石图以获得想法。