abort-controller-x-rxjs
Version:
Abortable helpers for RxJS
31 lines • 883 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.defer = void 0;
const rxjs_1 = require("rxjs");
/**
* Like original `defer` from RxJS, but aborts passed function when
* unsubscribed.
*/
function defer(observableFactory) {
return new rxjs_1.Observable(subscriber => {
const abortController = new AbortController();
let input;
try {
input = observableFactory(abortController.signal);
}
catch (err) {
subscriber.error(err);
return () => {
abortController.abort();
};
}
const source = input
? rxjs_1.from(input)
: rxjs_1.EMPTY;
return source.subscribe(subscriber).add(() => {
abortController.abort();
});
});
}
exports.defer = defer;
//# sourceMappingURL=defer.js.map
;