UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

38 lines (37 loc) 1.02 kB
import {asyncUnsubscribe} from "../../../../../../misc/helpers/async-unsubscribe.mjs"; export function notificationsToValuesObservable(subscribe, onError, maxNumberOfValues = Number.POSITIVE_INFINITY) { return emit => { let running = true; const clear = () => { if (running) { running = false; asyncUnsubscribe(() => unsubscribe); } }; const values = []; const unsubscribe = subscribe(notification => { switch (notification.name) { case 'next': values.push(notification.value); if (values.length > maxNumberOfValues) { values.shift(); } break; case 'complete': emit(values); clear(); break; case 'error': if (onError !== void 0) { onError(notification.value, values => { if (running) { emit(values); } }); } break; } }); return clear; }; }