UNPKG

abort-controller-x-rxjs

Version:
31 lines 883 B
"use strict"; 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