function stable

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>>



An observable of notifications to start new windows.


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.


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


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

windowToggle marble diagram

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.


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

import { fromEvent, interval, EMPTY } 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),
result.subscribe(x => console.log(x));

See Also

© 2015–2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors.
Code licensed under an Apache-2.0 License. Documentation licensed under CC BY 4.0.