RxJS debounce

2020-10-14 10:00 更新

僅在特定時間段后才從源中觀察到值 由另一個 Observable 確定的已通過,而沒有其他源發(fā)射。

debounce<T>(durationSelector: (value: T) => SubscribableOrPromise<any>): MonoTypeOperatorFunction<T>

參量

durationSelector 功能 從源 Observable 接收一個值,用于計算超時 每個源值的持續(xù)時間,以 Observable 或 Promise 的形式返回。

returns

MonoTypeOperatorFunction<T>:一個可觀察到的延遲排放源的方法 在指定的持續(xù)時間內可觀察到 durationSelector,如果它們出現(xiàn)得太頻繁,可能會丟棄一些值。

描述

就像 debounceTime,但是時間跨度 發(fā)射靜默由第二個 Observable 確定。

debounce marble diagram

debounce延遲源 Observable 發(fā)出的值,但將其丟棄 如果有新值到達“可觀察”源,則等待延遲排放。 該運算符跟蹤源中的最新值 可觀察到的,并通過調用 durationSelector 功能。 該值僅在持續(xù)時間 Observable 發(fā)出一個值或完成一個值,并且如果沒有其他值被發(fā)出 自產(chǎn)生 Observable 持續(xù)時間以來的源 Observable。 如果是新的 值出現(xiàn)在 Observable 持續(xù)時間發(fā)出之前,前一個值將 被丟棄,不會在輸出 Observable 上發(fā)出。

像一樣 debounceTime,這是一個限速運算符,也是一個 像延遲一樣的運算符,因為輸出排放不一定會在 就像他們在源 Observable 上所做的一樣。

點擊后發(fā)出最近的點擊

import { fromEvent, interval } from 'rxjs';
import { debounce } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(debounce(() => interval(1000)));
result.subscribe(x => console.log(x));

也可以看看

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號