UNPKG

@jsonjoy.com/reactive-rpc

Version:

Reactive-RPC is a library for building reactive APIs over WebSocket, HTTP, and other RPCs.

47 lines 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.subscribeCompleteObserver = subscribeCompleteObserver; const microtask_1 = require("./microtask"); function subscribeCompleteObserver(observable, observer) { let completed = false; let completeCalled = false; let tasks = 0; return observable.subscribe({ next: (value) => { tasks++; (0, microtask_1.microtask)(() => { tasks--; if (completed && !tasks) { completeCalled = true; observer.complete(value, true); } else { observer.next(value); } }); }, error: (error) => { if (!tasks) observer.error(error); else (0, microtask_1.microtask)(() => { observer.error(error); }); }, complete: () => { completed = true; if (completeCalled) return; if (!tasks) observer.complete(undefined, false); else { (0, microtask_1.microtask)(() => { if (completeCalled) return; observer.complete(undefined, false); }); } }, }); } //# sourceMappingURL=subscribeCompleteObserver.js.map