Skip to main content

anyWithNotifications

Alternative: anyN

Types

function anyWithNotifications<GObservables extends IGenericAnyInObservables>(
observables: GObservables,
): IObservable<IAnyObservableNotifications<GObservables>>

Definition

Waits for the first observable to send a complete Notification, or all observables sending an error Notification.

If it received a complete Notification, it will emit the last value received through the next Notifications of this observable, followed by a complete Notification.

If it received only error Notifications, it will send an error Notification (whose value is an AggregateError).

This is equivalent of Promise.any.

Diagrams

If one completes

OUTanyWithNotifications([observablesA, observablesB])observablesBobservablesAOUTanyWithNotifications([observablesA, observablesB])observablesBobservablesAerrornext: a1completenext: a1complete

If one errored

OUTanyWithNotifications([observablesA, observablesB])observablesBobservablesAOUTanyWithNotifications([observablesA, observablesB])observablesBobservablesAerror: errorBerror: errorAerror: AggregateError([errorA, errorB])

Examples

Example 1

const observable0$ = switchMap$$(timeout(1000), () => singleN<'a1'>('a1'));
const observable1$ = switchMap$$(timeout(500), () => throwError(new Error(`Failed`)));

const subscribe = anyWithNotifications([observable0$, observable1$]);

subscribe((value: IDefaultNotificationsUnion<'a1'>) => {
console.log(value);
});

Output:

// t = 1000ms
'next', 'a1'
'complete', undefined

Example 2

const observable0$ = switchMap$$(timeout(1000), () => throwError(new Error(`Failed A`)));
const observable1$ = switchMap$$(timeout(500), () => throwError(new Error(`Failed B`)));

const subscribe = anyWithNotifications([observable0$, observable1$]);

subscribe((value: IDefaultNotificationsUnion<any>) => {
console.log(value);
});

Output:

// t = 1000ms
'error', AggregateError