@akala/core
Version:
40 lines • 1.09 kB
JavaScript
"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