| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var operators_1 = require("rxjs/operators");
- /**
- * Returns an Observable that mirrors the source Observable, but will call a specified function when
- * the source terminates on complete, error or unsubscribe.
- *
- * <span class="informal">Ensure a given function will be called when a stream ends, no matter why it ended.</span>
- *
- * `finally` method accepts as a single parameter a function. This function does not accept any parameters and
- * should not return anything. It will be called whenever source Observable completes, errors or is unsubscribed,
- * which makes it good candidate to perform any necessary clean up or side effects when Observable terminates,
- * no matter how or why it terminated.
- *
- * Observable returned by `finally` will simply mirror source Observable - each time it is subscribed, source
- * Observable will be subscribed underneath.
- *
- * Note that behavior of `finally` will be repeated per every subscription, so if resulting Observable has
- * many subscribers, function passed to `finally` might be potentially called multiple times.
- *
- * Remember also that `finally` differs quite a lot from passing complete or error handler to {@link subscribe}. It will
- * return an Observable which can be further chained, while `subscribe` returns Subscription, basically ending Observable
- * chain. Function passed to `finally` will be called also when consumer of resulting Observable unsubscribes from it,
- * while handlers passed to `subscribe` will not (even complete handler). But most importantly, `finally` does not start
- * an execution of source Observable, like `subscribe` does, allowing you to set up all necessary hooks before
- * passing Observable further, even without specific knowledge how or when it will be used.
- *
- *
- * @example <caption>Call finally after complete notification</caption>
- * Rx.Observable.of(1, 2, 3)
- * .finally(() => console.log('I was finalized!'))
- * .map(x => x * 2) // `finally` returns an Observable, so we still can chain operators.
- * .subscribe(
- * val => console.log(val),
- * err => {},
- * () => console.log('I completed!')
- * );
- *
- * // Logs:
- * // 1
- * // 2
- * // 3
- * // "I completed!"
- * // "I was finalized!"
- *
- *
- *
- * @example <caption>Call finally after consumer unsubscribes</caption>
- * const o = Rx.Observable.interval(1000)
- * .finally(() => console.log('Timer stopped'));
- *
- * const subscription = o.subscribe(
- * val => console.log(val),
- * err => {},
- * () => console.log('Complete!') // Will not be called, since complete handler
- * ); // does not react to unsubscription, just to
- * // complete notification sent by the Observable itself.
- *
- * setTimeout(() => subscription.unsubscribe(), 2500);
- *
- * // Logs:
- * // 0 after 1s
- * // 1 after 2s
- * // "Timer stopped" after 2.5s
- *
- * @see {@link using}
- *
- * @param {function} callback Function to be called when source terminates (completes, errors or is unsubscribed).
- * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.
- * @method finally
- * @name finally
- * @owner Observable
- */
- function _finally(callback) {
- return operators_1.finalize(callback)(this);
- }
- exports._finally = _finally;
- //# sourceMappingURL=finally.js.map
|