我订阅了以下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}
我不希望它发出任何东西。我不明白为什么它不会停止发光。
答案 0 :(得分:1)
您正在将Observable映射到Observable的Observable。外部的观察者不断发出,这就是你所订阅的。你真正想要的是每次外部发出时不断切换到最新的内部(切换意义:订阅新的并取消订阅旧的)。那是 switchMap为您做什么。查看switchMap的大理石图以获得想法。