RxJS debounce

2020-10-14 10:00 更新

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

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

參量

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

returns

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

描述

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

debounce marble diagram

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

像一樣 debounceTime,這是一個(gè)限速運(yùn)算符,也是一個(gè) 像延遲一樣的運(yùn)算符,因?yàn)檩敵雠欧挪灰欢〞?huì)在 就像他們?cè)谠?Observable 上所做的一樣。

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

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));

也可以看看

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)