UNPKG

@reactivex/rxjs

Version:

Reactive Extensions for modern JavaScript

47 lines (46 loc) 2.08 kB
import { Observable } from '../Observable'; import { Scheduler } from '../Scheduler'; /** * Buffers the source Observable values for a specific time period. * * <span class="informal">Collects values from the past as an array, and emits * those arrays periodically in time.</span> * * <img src="./img/bufferTime.png" width="100%"> * * Buffers values from the source for a specific time duration `bufferTimeSpan`. * Unless the optional argument `bufferCreationInterval` is given, it emits and * resets the buffer every `bufferTimeSpan` milliseconds. If * `bufferCreationInterval` is given, this operator opens the buffer every * `bufferCreationInterval` milliseconds and closes (emits and resets) the * buffer every `bufferTimeSpan` milliseconds. * * @example <caption>Every second, emit an array of the recent click events</caption> * var clicks = Rx.Observable.fromEvent(document, 'click'); * var buffered = clicks.bufferTime(1000); * buffered.subscribe(x => console.log(x)); * * @example <caption>Every 5 seconds, emit the click events from the next 2 seconds</caption> * var clicks = Rx.Observable.fromEvent(document, 'click'); * var buffered = clicks.bufferTime(2000, 5000); * buffered.subscribe(x => console.log(x)); * * @see {@link buffer} * @see {@link bufferCount} * @see {@link bufferToggle} * @see {@link bufferWhen} * @see {@link windowTime} * * @param {number} bufferTimeSpan The amount of time to fill each buffer array. * @param {number} [bufferCreationInterval] The interval at which to start new * buffers. * @param {Scheduler} [scheduler=async] The scheduler on which to schedule the * intervals that determine buffer boundaries. * @return {Observable<T[]>} An observable of arrays of buffered values. * @method bufferTime * @owner Observable */ export declare function bufferTime<T>(bufferTimeSpan: number, bufferCreationInterval?: number, scheduler?: Scheduler): Observable<T[]>; export interface BufferTimeSignature<T> { (bufferTimeSpan: number, bufferCreationInterval?: number, scheduler?: Scheduler): Observable<T[]>; }