abort-controller-x-rxjs
Version:
Abortable helpers for RxJS
26 lines • 853 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromAsyncGenerator = void 0;
const rxjs_1 = require("rxjs");
/**
* Turns abortable async generator to observable.
*/
function fromAsyncGenerator(fn) {
return new rxjs_1.Observable(subscriber => {
const abortController = new AbortController();
async function iterate() {
for await (const item of fn(abortController.signal)) {
if (subscriber.closed) {
return;
}
subscriber.next(item);
}
}
iterate().then(() => subscriber.complete(), err => subscriber.error(err));
return () => {
abortController.abort();
};
});
}
exports.fromAsyncGenerator = fromAsyncGenerator;
//# sourceMappingURL=fromAsyncGenerator.js.map
;