RxJS throttleTime

2020-10-14 10:41 更新

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

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

參量

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

returns

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

描述

讓值通過(guò),然后忽略 接下來(lái)的 duration毫秒。

油門(mén)時(shí)間大理石圖

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

例子

限制點(diǎn)擊率

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

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ā)生的點(diǎn)擊 上次點(diǎn)擊延遲 400 毫秒。 例如,這可以模擬一個(gè) double 點(diǎn)擊。 它利用 的 trailing了節(jié)氣門(mén)配置 參數(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ù),則輸出將是主點(diǎn)擊, 雙擊,但將額外的點(diǎn)擊限制在 400 毫秒內(nèi)。

也可以看看

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)