dematerialize

function stable

Converts an Observable of ObservableNotification objects into the emissions that they represent.

dematerialize<N extends ObservableNotification<any>>(): OperatorFunction<N, ValueFromNotification<N>>

Parameters

There are no parameters.

Returns

OperatorFunction<N, ValueFromNotification<N>>: A function that returns an Observable that emits items and notifications embedded in Notification objects emitted by the source Observable.

Description

Unwraps ObservableNotification objects as actual next, error and complete emissions. The opposite of materialize.

dematerialize marble diagram

dematerialize is assumed to operate an Observable that only emits ObservableNotification objects as next emissions, and does not emit any error. Such Observable is the output of a materialize operation. Those notifications are then unwrapped using the metadata they contain, and emitted as next, error, and complete on the output Observable.

Use this operator in conjunction with materialize.

Example

Convert an Observable of Notifications to an actual Observable

import { of } from 'rxjs';
import { dematerialize } from 'rxjs/operators';

const notifA = { kind: 'N', value: 'A' };
const notifB = { kind: 'N', value: 'B' };
const notifE = { kind: 'E', error: new TypeError('x.toUpperCase is not a function') }

const materialized = of(notifA, notifB, notifE);

const upperCase = materialized.pipe(dematerialize());
upperCase.subscribe({
   next: x => console.log(x),
   error: e => console.error(e)
});

// Results in:
// A
// B
// TypeError: x.toUpperCase is not a function

See Also

© 2015–2021 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/dematerialize