UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

36 lines (35 loc) 1.13 kB
import {STATIC_COMPLETE_NOTIFICATION} from "../../../../../../../misc/notifications/built-in/complete/complete-notification.constant.mjs"; import {createErrorNotification} from "../../../../../../../misc/notifications/built-in/error/create-error-notification.mjs"; import {createNextNotification} from "../../../../../../../misc/notifications/built-in/next/create-next-notification.mjs"; export function fromAsyncIterator(asyncIterator) { return emit => { let running = true; (async () => { while (running) { let result; try { result = await asyncIterator.next(); } catch (error) { if (running) { emit(createErrorNotification(error)); } return; } if (running) { if (result.done) { emit(STATIC_COMPLETE_NOTIFICATION); return; } else { emit(createNextNotification(result.value)); } } } if (('return' in asyncIterator)) { asyncIterator.return(void 0); } })(); return () => { running = false; }; }; }