pjobs
A simple and efficient queue job executor using promises. And some promise's utilities.
install
npm install --save pjobs
usage
queuePromises
defines an executor for jobs. A job is just a function that returns a Promise. You can also control concurrency and promises.
import { queuePromises } from 'pjobs'
const queue = queuePromises({
concurrency: 1,
onProgress (status) {
console.log('done: ', status.percent, '%')
console.log('speed: ', status.rate)
console.log('estimated time remaining to finish: ', status.timeRemaining)
}
})
queue.enqueue(async () => {
console.log('task 1')
})
queue.enqueue(async () => {
console.log('task 2')
})
await queue.waitFor()
defer
allow you to defer promise's resolving or rejecting.
import { queuePromises, defer } from 'pjobs'
const taskOne = defer<void>()
const queue = queuePromises()
queue.enqueue(async () => {
console.log('task 1')
taskOne.resolve()
})
queue.enqueue(async () => {
console.log('task 2')
})
expect(queue.state()).not.toBe('idle')
await taskOne.promise
await queue.waitFor()
sleep
allow you pause execution flow for some miliseconds
import { sleep } from 'pjobs'
await sleep(100)
asap
delay execution of a function to as soon as possible
import { asap } from 'pjobs'
asap(()=>console.log('b'))
console.log('a')