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.

69 lines (68 loc) 2.4 kB
import { __awaiter, __generator } from "tslib"; export var createSequence = function () { var queue = []; var isExecuting = false; var isRun = false; var run = function () { return __awaiter(void 0, void 0, void 0, function () { var nextItem, action, resolve, reject, result, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (isExecuting) { return [2]; } isExecuting = true; _a.label = 1; case 1: if (!(queue.length > 0)) return [3, 6]; nextItem = queue.shift(); if (typeof nextItem === "undefined") { return [3, 6]; } if (!isRun) { return [3, 6]; } action = nextItem.action, resolve = nextItem.resolve, reject = nextItem.reject; _a.label = 2; case 2: _a.trys.push([2, 4, , 5]); return [4, action()]; case 3: result = _a.sent(); resolve(result); return [3, 5]; case 4: error_1 = _a.sent(); reject(error_1); return [3, 5]; case 5: return [3, 1]; case 6: isExecuting = false; return [2]; } }); }); }; var enqueue = function (action) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { return [2, new Promise(function (resolve, reject) { queue.push({ action: action, resolve: resolve, reject: reject }); if (isRun) { run(); } })]; }); }); }; var clear = function () { isExecuting = false; isRun = false; queue.splice(0, queue.length); }; return { run: function () { isRun = true; run(); }, enqueue: enqueue, clear: clear, }; };