1
我有很多痛苦的理解,爲什麼我的觀察從未完成。可觀察的計時器永遠不會完成儘管takeUntil
我的代碼應該是這樣的工作:
- 初始化爲false
- 主題
isTimerEnabled$
這是switchMap
倒是來,要麼返回Rx.Observable.never()
時isTimerEnabled$
發出假的,否則它映射到一個功能Rx.Observable.timer
可觀察 - 從計時器我
take
一切爲1秒。 - 1秒後,可觀測完成
的問題是,當我訂閱了這一切,我的觀察者的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倍到控制檯,然後..嗯,這是它(我簡化了我代碼片段的目的..好簡單)
謝謝你的時間:)
您好,感謝您的答覆,你能說明一個小的代碼片段? – Codii
@Codii當然,我已經用代碼片段更新了答案。 –
也許我沒有具體說明我希望我的Observable能夠完成自己的事情,而不是強制要求完成這個主題。 – Codii