sweetpea
Version:
Signal and Web Component Enhanced Web Apps
32 lines (29 loc) • 751 B
JavaScript
import EventEmitter from 'event-emitter';
import Signal from 'signal';
export default class JobQueue extends EventEmitter {
count = new Signal(0);
total = new Signal(0);
#list = [];
constructor() {
super()
}
enqueue(job) {
if(!job) throw new Error('Job is a required prameter');
this.#list.push(job);
this.count.set(this.#list.length);
this.total.update((v) => (v++,v));
this.emit('enqueue', job);
}
dequeue() {
this.#list.shift(job);
this.count.set(this.#list.length);
this.emit('dequeue', job);
}
remove(id){
this.#list.splice(this.#list.findIndex(o => o.id === id), 1);
this.count.set(this.#list.length);
}
[Symbol.iterator]() {
return this.#list[Symbol.iterator]();
}
}