windowToggle

Branch out the source Observable values as a nested Observable starting from an emission from openings and ending when the output of closingSelector emits.

windowToggle<T, O>(openings: Observable<O>, closingSelector: (openValue: O) => Observable<any>): OperatorFunction<T, Observable<T>>

Parameters

openings

An observable of notifications to start new windows.

closingSelector

A function that takes the value emitted by the openings observable and returns an Observable, which, when it emits (either next or complete), signals that the associated window should complete.

Returns

OperatorFunction<T, Observable<T>>: An observable of windows, which in turn are Observables.

Description

It's like bufferToggle, but emits a nested Observable instead of an array.

Returns an Observable that emits windows of items it collects from the source Observable. The output Observable emits windows that contain those items emitted by the source Observable between the time when the openings Observable emits an item and when the Observable returned by closingSelector emits an item.

Example

Every other second, emit the click events from the next 500ms

import { fromEvent, interval } from 'rxjs'; import { windowToggle, mergeAll } from 'rxjs/operators'; const clicks = fromEvent(document, 'click'); const openings = interval(1000); const result = clicks.pipe( windowToggle(openings, i => i % 2 ? interval(500) : empty()), mergeAll(), ); result.subscribe(x => console.log(x));

See Also