【发布时间】:2017-08-31 01:58:54
【问题描述】:
我很难理解为什么我的 observable 永远不会完成。
我的代码应该是这样工作的:
- 主题
isTimerEnabled$初始化为 false - 当
isTimerEnabled$发出 false 时返回Rx.Observable.never()的函数是switchMap'd,否则它映射到Rx.Observable.timerobservable - 从计时器我
take一切持续 1 秒。 - 1 秒后,observable 完成
问题是当我订阅所有这些时,我的观察者的 complete 方法永远不会被调用。
这里是代码,也许更有帮助:
const isTimerEnabled$ = new Rx.Subject(false).switchMap(
isTimerEnabled =>
isTimerEnabled
? Rx.Observable
.timer(0, 100)
.timeInterval()
.pluck('interval')
.takeUntil(Rx.Observable.timer(1000))
: Rx.Observable.never()
)
isTimerEnabled$.subscribe(
console.log,
console.error,
() => console.log('complete !')
)
所以当我这样做的时候:
isTimerEnabled$.next(true)
它向控制台记录 10 次,然后 .. 就是这样(我简化了我的代码 sn-p 以实现 .. 简单)
感谢您的宝贵时间:)
【问题讨论】:
标签: javascript rxjs rxjs5