You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- '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();
- });
- }
- };
|