UNPKG

@akala/core

Version:
40 lines 1.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Queue { constructor(handler, queue) { this.handler = handler; this.processing = false; this.pending = queue || []; } enqueue(message) { this.pending.push(message); this.save(); this.process(); } ; save(_throw) { if (_throw) throw new Error('You need to define where and how to save the queue.'); } process() { if (this.processing) return; this.processing = true; var message = this.pending.shift(); this.current = message; if (!message) return this.processing = false; this.handler(message, (processed) => { if (processed === false) { this.enqueue(message); } this.save(); this.processing = false; if (processed !== false) process.nextTick(this.process.bind(this)); }); } ; } exports.Queue = Queue; //# sourceMappingURL=queue.js.map