Skip to content

Function: buffer()

buffer<T>(period): Operator<T, T[]>

Defined in: operators/buffer.ts:13

Buffers values from the source stream and emits them as arrays every period milliseconds, while tracking pending and phantom values in the PipeContext.

Type Parameters

T

T = any

The type of the values in the source stream.

Parameters

period

number

Time in milliseconds between each buffer flush.

Returns

Operator<T, T[]>

An Operator instance for use in a stream's pipe method.

Examples

From buffer.spec.ts:12

typescript
let source: Stream<number> = subject;

let subject: ReturnType<typeof createSubject<number>> = createSubject<number>();

const duration = 100;
const buffered = source.pipe(buffer(duration));
const results: number[][] = [];
(async () => {
  for await (const value of eachValueFrom(buffered)) {
    results.push(value);
  }
})();
subject.next(1);
await new Promise((resolve) => setTimeout(resolve, 25));
subject.next(2);
await new Promise((resolve) => setTimeout(resolve, 50));
subject.next(3);
await new Promise((resolve) => setTimeout(resolve, 100));
subject.next(4);
await new Promise((resolve) => setTimeout(resolve, 100));
subject.complete();
await new Promise((resolve) => setTimeout(resolve, 100));
expect(results).toEqual([[1, 2, 3], [4]]);

Released under the MIT License.