UNPKG

@glue42/bbg-market-data

Version:

A high-level API that wraps existing Glue42 Bloomberg Bridge Market Data interop methods. The API is based on the jBloomberg open source wrapper.

52 lines (51 loc) 1.4 kB
import { __awaiter } from "tslib"; export const createSequence = () => { const queue = []; let isExecuting = false; let isRun = false; const run = () => __awaiter(void 0, void 0, void 0, function* () { if (isExecuting) { return; } isExecuting = true; while (queue.length > 0) { const nextItem = queue.shift(); if (typeof nextItem === "undefined") { break; } if (!isRun) { break; } const { action, resolve, reject } = nextItem; try { const result = yield action(); resolve(result); } catch (error) { reject(error); } } isExecuting = false; }); const enqueue = (action) => __awaiter(void 0, void 0, void 0, function* () { return new Promise((resolve, reject) => { queue.push({ action, resolve, reject }); if (isRun) { run(); } }); }); const clear = () => { isExecuting = false; isRun = false; queue.splice(0, queue.length); }; return { run: () => { isRun = true; run(); }, enqueue, clear, }; };