mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 11:39:15 +00:00
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
class Queue {
|
|
static queue = []
|
|
static pendingPromise = false
|
|
|
|
static enqueue(promise) {
|
|
return new Promise((resolve, reject) => {
|
|
this.queue.push({
|
|
promise,
|
|
resolve,
|
|
reject,
|
|
})
|
|
this.dequeue()
|
|
})
|
|
}
|
|
|
|
static dequeue() {
|
|
if (this.workingOnPromise) {
|
|
return false
|
|
}
|
|
const item = this.queue.shift()
|
|
if (!item) {
|
|
return false
|
|
}
|
|
try {
|
|
this.workingOnPromise = true
|
|
item.promise()
|
|
.then((value) => {
|
|
this.workingOnPromise = false
|
|
item.resolve(value)
|
|
this.dequeue()
|
|
})
|
|
.catch((err) => {
|
|
this.workingOnPromise = false
|
|
item.reject(err)
|
|
this.dequeue()
|
|
})
|
|
} catch (err) {
|
|
this.workingOnPromise = false
|
|
item.reject(err)
|
|
this.dequeue()
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
module.exports = Queue
|