codecamp

RxJS debounce

仅在特定时间段后才从源中观察到值 由另一个 Observable 确定的已通过,而没有其他源发射。

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

参量

durationSelector 功能 从源 Observable 接收一个值,用于计算超时 每个源值的持续时间,以 Observable 或 Promise 的形式返回。

returns

MonoTypeOperatorFunction<T>:一个可观察到的延迟排放源的方法 在指定的持续时间内可观察到 durationSelector,如果它们出现得太频繁,可能会丢弃一些值。

描述

就像 debounceTime,但是时间跨度 发射静默由第二个 Observable 确定。

debounce marble diagram

debounce延迟源 Observable 发出的值,但将其丢弃 如果有新值到达“可观察”源,则等待延迟排放。 该运算符跟踪源中的最新值 可观察到的,并通过调用 durationSelector 功能。 该值仅在持续时间 Observable 发出一个值或完成一个值,并且如果没有其他值被发出 自产生 Observable 持续时间以来的源 Observable。 如果是新的 值出现在 Observable 持续时间发出之前,前一个值将 被丢弃,不会在输出 Observable 上发出。

像一样 debounceTime,这是一个限速运算符,也是一个 像延迟一样的运算符,因为输出排放不一定会在 就像他们在源 Observable 上所做的一样。

点击后发出最近的点击

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

也可以看看

RxJS count
RxJS debounceTime
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }