UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

57 lines (56 loc) 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.raceWithNotifications = void 0; var async_unsubscribe_1 = require("../../../../../../misc/helpers/async-unsubscribe.cjs"); var complete_notification_constant_1 = require("../../../../../../misc/notifications/built-in/complete/complete-notification.constant.cjs"); var create_next_notification_1 = require("../../../../../../misc/notifications/built-in/next/create-next-notification.cjs"); var empty_with_notifications_1 = require("../../values/empty/empty-with-notifications.cjs"); function raceWithNotifications(observables) { var length = observables.length; if (length === 0) { return (0, empty_with_notifications_1.emptyWithNotifications)(); } else { return function (emit) { var values = Array.from({ length: length }); var running = true; var clear = function () { if (running) { running = false; for (var i = 0, l = unsubscribe.length; i < l; i++) { unsubscribe[i](); } } }; var unsubscribe = observables.map(function (subscribe, index) { var unsubscribe = subscribe(function (notification) { switch (notification.name) { case 'next': values[index] = notification.value; break; case 'complete': (0, async_unsubscribe_1.asyncUnsubscribe)(function () { return unsubscribe; }); emit((0, create_next_notification_1.createNextNotification)(values[index])); if (running) { emit(complete_notification_constant_1.STATIC_COMPLETE_NOTIFICATION); } clear(); break; case 'error': emit(notification); clear(); break; } }); return unsubscribe; }); return clear; }; } } exports.raceWithNotifications = raceWithNotifications;