switchAll

Converts a higher-order Observable into a first-order Observable producing values only from the most recent observable sequence

switchAll<T>(): OperatorFunction<ObservableInput<T>, T>

Parameters

There are no parameters.

Returns

OperatorFunction<ObservableInput<T>, T>

Description

Flattens an Observable-of-Observables.

switchAll subscribes to a source that is an observable of observables, also known as a "higher-order observable" (or Observable<Observable<T>>). It subscribes to the most recently provided "inner observable" emitted by the source, unsubscribing from any previously subscribed to inner observable, such that only the most recent inner observable may be subscribed to at any point in time. The resulting observable returned by switchAll will only complete if the source observable completes, and any currently subscribed to inner observable also has completed, if there are any.

Examples

Spawn a new interval observable for each click event, but for every new click, cancel the previous interval and subscribe to the new one.

import { fromEvent, interval } from 'rxjs'; import { switchAll, map } from 'rxjs/operators'; const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click'))); const source = clicks.pipe(map((ev) => interval(1000))); source.pipe( switchAll() ).subscribe(x => console.log(x)); /* Output click 1 2 3 4 ... click 1 2 3 ... click ...

See Also