@bbc/sofie-server-core-integration
Version:
Library for connecting to Core
45 lines • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Queue = void 0;
class Queue {
_isRunning = false;
_queue = [];
async putOnQueue(fcn) {
return new Promise((resolve, reject) => {
this._queue.push({
fcn,
resolve,
reject,
});
setTimeout(() => {
this.checkQueue();
}, 0);
});
}
checkQueue() {
if (!this._isRunning) {
const nextOnQueue = this._queue.shift();
if (nextOnQueue) {
this._isRunning = true;
try {
nextOnQueue.fcn().then((result) => {
nextOnQueue.resolve(result);
this._isRunning = false;
this.checkQueue();
}, (error) => {
nextOnQueue.reject(error);
this._isRunning = false;
this.checkQueue();
});
}
catch (error) {
nextOnQueue.reject(error);
this._isRunning = false;
this.checkQueue();
}
}
}
}
}
exports.Queue = Queue;
//# sourceMappingURL=queue.js.map