From ebf6393f48347fd8b038a248ae8479a459e375a2 Mon Sep 17 00:00:00 2001 From: Mateusz Podlasin Date: Wed, 3 May 2017 21:10:21 +0200 Subject: [PATCH] docs(onErrorResumeNext): create documentation for the operator (#2571) Create documentation for 'onErrorResumeNext' operator. Describe what it accepts and returns. Compare it to 'concat' operator. Add note about 'catch' operator. Provide example of usage. --- src/operator/onErrorResumeNext.ts | 63 +++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/operator/onErrorResumeNext.ts b/src/operator/onErrorResumeNext.ts index e2786fc26d..7e62d6d794 100644 --- a/src/operator/onErrorResumeNext.ts +++ b/src/operator/onErrorResumeNext.ts @@ -16,6 +16,69 @@ export function onErrorResumeNext(this: Observable, export function onErrorResumeNext(this: Observable, ...observables: Array | ((...values: Array) => R)>): Observable; export function onErrorResumeNext(this: Observable, array: ObservableInput[]): Observable; /* tslint:enable:max-line-length */ + +/** + * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one + * that was passed. + * + * Execute series of Observables no matter what, even if it means swallowing errors. + * + * + * + * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as + * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same + * as the source. + * + * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable. + * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext` + * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting + * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another + * Observable in provided series, no matter if previous Observable completed or ended with an error. This will + * be happening until there is no more Observables left in the series, at which point returned Observable will + * complete - even if the last subscribed stream ended with an error. + * + * `onErrorResumeNext` can be therefore though of as version of {@link concat} operator, which is more permissive + * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable + * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with + * an error. + * + * Note that you do not get any access to errors emitted by the Observables. In particular do not + * expect these errors to appear in error callback passed to {@link subscribe}. If you want to take + * specific actions based on what error was emitted by an Observable, you should try out {@link catch} instead. + * + * + * @example Subscribe to the next Observable after map fails + * Rx.Observable.of(1, 2, 3, 0) + * .map(x => { + * if (x === 0) { throw Error(); } + return 10 / x; + * }) + * .onErrorResumeNext(Rx.Observable.of(1, 2, 3)) + * .subscribe( + * val => console.log(val), + * err => console.log(err), // Will never be called. + * () => console.log('that\'s it!') + * ); + * + * // Logs: + * // 10 + * // 5 + * // 3.3333333333333335 + * // 1 + * // 2 + * // 3 + * // "that's it!" + * + * @see {@link concat} + * @see {@link catch} + * + * @param {...ObservableInput} observables Observables passed either directly or as an array. + * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes + * to the next passed Observable and so on, until it completes or runs out of Observables. + * @method onErrorResumeNext + * @owner Observable + */ + export function onErrorResumeNext(this: Observable, ...nextSources: Array | Array> | ((...values: Array) => R)>): Observable {