@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.
55 lines • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSequence = void 0;
const tslib_1 = require("tslib");
exports.createSequence = () => {
const queue = [];
let isExecuting = false;
let isRun = false;
const run = () => tslib_1.__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) => tslib_1.__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,
};
};
//# sourceMappingURL=seq.js.map