123456789101112131415161718192021222324252627282930313233 |
- 'use strict';
- module.exports = class Queue {
- _queue = [];
- _executing = false;
- _jobRunner = null;
- constructor(jobRunner) {
- this._jobRunner = jobRunner;
- }
- enqueue = (...args) => {
- this._queue.push(args);
- this._dequeue();
- };
- destroy() {
- this._queue.length = 0;
- this._jobRunner = null;
- }
- _dequeue() {
- if (this._executing || !this._queue.length) return;
- this._executing = true;
- this._jobRunner(...this._queue.shift());
- setTimeout(() => {
- this._executing = false;
- this._dequeue();
- });
- }
- };
|