UNPKG

parse

Version:
44 lines (43 loc) 996 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _promiseUtils = require("./promiseUtils"); class TaskQueue { constructor() { this.queue = []; } enqueue(task) { // eslint-disable-next-line const taskComplete = (0, _promiseUtils.resolvingPromise)(); this.queue.push({ task: task, _completion: taskComplete }); if (this.queue.length === 1) { task().then(() => { this._dequeue(); taskComplete.resolve(); }, error => { this._dequeue(); taskComplete.reject(error); }); } return taskComplete; } _dequeue() { this.queue.shift(); if (this.queue.length) { const next = this.queue[0]; next.task().then(() => { this._dequeue(); next._completion.resolve(); }, error => { this._dequeue(); next._completion.reject(error); }); } } } var _default = exports.default = TaskQueue;