簡體   English   中英

RxJS:Rx.Observable.interval上的debounceTime無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM