1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _promiseUtils = require("./promiseUtils");
- class TaskQueue {
- constructor() {
- this.queue = [];
- }
- enqueue(task) {
- 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);
- });
- }
- }
- }
- module.exports = TaskQueue;
- var _default = exports.default = TaskQueue;
|