abort-controller-x-rxjs
Version:
Abortable helpers for RxJS
27 lines • 761 B
JavaScript
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