跳到主要内容

withTimeWindows()

function withTimeWindows<T>(
source,
debounce,
audit
): Observable<T>;

Defined in: packages/utils/src/async/withTimeWindows.ts:43

按窗口配置给一条流挂上防抖 / 采样。

Type Parameters​

Type ParameterDescription
T流的值类型

Parameters​

ParameterTypeDescription
sourceObservable<T>源流
debouncenumber防抖窗口毫秒数;非正有限值表示禁用
auditnumber采样窗口毫秒数;非正有限值表示禁用

Returns​

Observable<T>

挂好 operator 的流;两个窗口都禁用时原样返回 source(引用相等)

Remarks​

两者同时启用时串联生效,顺序固定为 debounceTime → auditTime,不是二选一。

RAN-011:早先两个 operator 无条件串联,于是默认配置(0 / 0)下每个值仍要经过 debounceTime(0) 和 auditTime(0) 两层 asyncScheduler —— 同步消费者(Angular OnPush 视图的 markForCheck、Vue/React 的当拍重渲染)在当前周期内根本拿不到值。 禁用的窗口直接不进管道,让默认路径退化成同步透传。

逐段 pipe 而不是收集 operator 数组后 pipe(...operators):pipe 的重载按定长参数 声明,展开一个数组拿不到元组类型(TS2556)。

这份定义由 Angular 的 RxDBEntityChangeDirective 与 Vue/React 的 useEntityChange 共用(RVU-010):三端各抄一份必然漂移,而漂移的正是上面这些一字之差的判定。