UNPKG

@johngw/stream

Version:

Reactive programming tools using the WHATWG Streams API.

36 lines (34 loc) 804 B
import { DebounceBehavior } from '#transformers/debounce/Behavior' import { DebounceState } from '#transformers/debounce/State' /** * Debouncing behavior to queue the trailing event. * * @group Transformers * @see {@link debounce:function} * @example * ``` * --a----T20--b-c----T20--d------| * * debounce(20) * // Same as... * debounce(20, new DebounceTrailingBehavior()) * * ---T20-a------T20-c------T20-d-- * ``` */ export class DebounceTrailingBehavior<T> implements DebounceBehavior<T> { postTimer( state: DebounceState, chunk: T, controller: TransformStreamDefaultController<T> ): DebounceState | void { const enqueue = !state.queued if (enqueue) { controller.enqueue(chunk) return { ...state, queued: enqueue, } } } }