UNPKG

abort-controller-x-rxjs

Version:
27 lines 761 B
import { EMPTY, from, Observable } from 'rxjs'; /** * Like original `defer` from RxJS, but aborts passed function when * unsubscribed. */ export function defer(observableFactory) { return new Observable(subscriber => { const abortController = new AbortController(); let input; try { input = observableFactory(abortController.signal); } catch (err) { subscriber.error(err); return () => { abortController.abort(); }; } const source = input ? from(input) : EMPTY; return source.subscribe(subscriber).add(() => { abortController.abort(); }); }); } //# sourceMappingURL=defer.js.map