RxJS throttleTime

2020-10-14 10:41 更新

從源 Observable 發(fā)出值,然后忽略后續(xù)源 值(以 為 duration毫秒 單位),然后重復(fù)此過程。

throttleTime<T>(duration: number, scheduler: SchedulerLike = async, config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction<T>

參量

持續(xù)時間 等待之后再發(fā)射另一個值的時間 發(fā)出以毫秒為單位或確定的時間單位的最后一個值 內(nèi)部由可選 scheduler
調(diào)度器 可選的。 默認值為 async。  該 SchedulerLike用于  管理處理節(jié)流的計時器。
配置 可選的。 默認值為 defaultThrottleConfig。  一個配置對象來定義 leading和  trailing行為。 默認為 { leading: true, trailing: false }。

returns

MonoTypeOperatorFunction<T>:執(zhí)行可進行油門操作的 Observable 限制源頭的排放速率。

描述

讓值通過,然后忽略 接下來的 duration毫秒。

油門時間大理石圖

throttleTime在輸出 Observable 上發(fā)出源 Observable 值 禁用其內(nèi)部計時器時,并在計時器時忽略源值 已啟用。 最初,計時器被禁用。 最早的來源 值到達,將其轉(zhuǎn)發(fā)到輸出 Observable,然后計時器 已啟用。 后 duration毫秒(或時間單元確定 在內(nèi)部由可選的 scheduler)傳遞,計時器已禁用, 并對下一個源值重復(fù)此過程。 (可選) SchedulerLike用于管理計時器。

例子

限制點擊率

以每秒最多一次點擊的速度發(fā)出點擊

import { fromEvent } from 'rxjs';
import { throttleTime } from 'rxjs/operators';


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

雙擊

以下示例僅發(fā)出在后續(xù)事件中發(fā)生的點擊 上次點擊延遲 400 毫秒。 例如,這可以模擬一個 double 點擊。 它利用 的 trailing了節(jié)氣門配置 參數(shù)。

import { fromEvent, asyncScheduler } from 'rxjs';
import { throttleTime, withLatestFrom } from 'rxjs/operators';


// defaultThottleConfig = { leading: true, trailing: false }
const throttleConfig = {
  leading: false,
  trailing: true
}


const click = fromEvent(document, 'click');
const doubleClick = click.pipe(
  throttleTime(400, asyncScheduler, throttleConfig)
);


doubleClick.subscribe((throttleValue: Event) => {
  console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`);
});

如果 啟用該 leading在此示例中 參數(shù),則輸出將是主點擊, 雙擊,但將額外的點擊限制在 400 毫秒內(nèi)。

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號