33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
|
import { Subscriber } from '../Subscriber';
|
||
|
import { Subscription } from '../Subscription';
|
||
|
/**
|
||
|
* Returns an Observable that mirrors the source Observable, but will call a specified function when
|
||
|
* the source terminates on complete or error.
|
||
|
* @param {function} callback Function to be called when source terminates.
|
||
|
* @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.
|
||
|
* @method finally
|
||
|
* @owner Observable
|
||
|
*/
|
||
|
export function finalize(callback) {
|
||
|
return (source) => source.lift(new FinallyOperator(callback));
|
||
|
}
|
||
|
class FinallyOperator {
|
||
|
constructor(callback) {
|
||
|
this.callback = callback;
|
||
|
}
|
||
|
call(subscriber, source) {
|
||
|
return source.subscribe(new FinallySubscriber(subscriber, this.callback));
|
||
|
}
|
||
|
}
|
||
|
/**
|
||
|
* We need this JSDoc comment for affecting ESDoc.
|
||
|
* @ignore
|
||
|
* @extends {Ignored}
|
||
|
*/
|
||
|
class FinallySubscriber extends Subscriber {
|
||
|
constructor(destination, callback) {
|
||
|
super(destination);
|
||
|
this.add(new Subscription(callback));
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=finalize.js.map
|