W3cubDocs

/RxJS

switchAll

function stable

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

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, tap } 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

© 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.
https://rxjs.dev/api/operators/switchAll