pjobs
A simple, efficient and small (just 2.8kb) queue job executor using promises with concurrency control. 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. Demonstration
import { queuePromises } from 'pjobs'
const queue = queuePromises({
concurrency: 1,
onProgress (status) {
console.log('queue status: ', status)
}
})
queue.enqueue(async () => {
console.log('task 1')
})
const promiseForTask2 = queue.promise(async () => {
console.log('task 2')
return 'OK'
})
await queue.waitFor()
await promiseForTask2
await queue.forEach(['task 3', 'task 4'], async (item) => {
console.log(item)
})
const doubles = await queue.map([1,2], async (item) => {
return item * 2
})
const sum = await queue.reduce([1,2,3,4], async (ret, item) => {
return item + ret
}, 0)
const two = await queue.some([1,2,3,4], async (item) => {
return item % 2 === 0
})
defer
allow you to deferred promise. Like promise-deferred NPM but lighter.
import { defer } from 'pjobs'
const deffered = defer<number>()
setTimeout( ()=> deffered.resolve(1), 10)
setTimeout( ()=> deffered.reject(new Error('timeout')), 100)
await deffered.promise
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');