[英]RxJS: debounceTime on Rx.Observable.interval is not working as expected
在下面的代碼行我期待的印刷here
每2秒。 但是什么都沒有打印:
Rx.Observable.interval(1000).debounceTime(2000).subscribe(x => console.log('here'))
然而,在下面的代碼行, here
是每2秒的印刷,如所預期:
Rx.Observable.interval(2000).debounceTime(1000).subscribe(x => console.log('here'))
在第一種情況下,我希望將1秒周期的事件流反跳到2秒周期。 這似乎不起作用。
在第二種情況下,我希望將2秒周期的事件流反跳到1秒周期。 這似乎有效。
為什么第一種情況無法按預期工作? 我的期望有什么問題嗎?
您可能將防抖與油門相混淆。
對於每個項目,等待X ms,直到沒有其他項目被發射,然后才發射該項目。
Rx.Observable.interval(1000).debounceTime(2000).subscribe(x => console.log('here'))
所有項目都將被丟棄,因為一個項目將始終在2000毫秒內發射。
如果在過去的X毫秒內沒有發射其他項目,則發出一個項目。 否則,該項目將被丟棄。
Rx.Observable.interval(1000).throttleTime(2000).subscribe(x => console.log('here'))
每2000毫秒打印一個項目。
第一種情況的問題是,您正在每秒創建一個新的間隔,但是告訴可觀察對象等到2秒鍾后才能將對象傳遞到訂閱。 由於interval
值小於debounceTime
值,因此您的訂閱將永遠不會“解析”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.