1.1.0 • Published 8 years ago
queue-holder v1.1.0
QueueHolder
Asynchronous queue
Install
npm i queue-holderExmaple #1
const QueueHolder = require('queue-holder');
const queue = new QueueHolder();
async function doSome(index, sleep = false) {
await queue.hold(); // hold our queue
if (sleep) {
console.log(`job[${index}] with sleep started`);
await queue.sleep(0.5); // sleep for 0.5 seconds
console.log(`job[${index}] do some stuff`);
await queue.sleep(0.5); // sleep for 0.5 seconds
console.log(`job[${index}] do some stuff again`);
await queue.sleep(0.5); // sleep for 0.5 seconds
console.log(`job[${index}] with sleep done`);
} else {
console.log(`job[${index}] without sleep`);
}
// release our queue and let next job do some stuff
queue.release();
}
for(let i = 0; i < 10; i++) {
doSome(i, i <= 1);
}Output:
job[0] with sleep started
job[0] do some stuff
job[0] do some stuff again
job[0] with sleep done
job[1] with sleep started
job[1] do some stuff
job[1] do some stuff again
job[1] with sleep done
job[2] without sleep
job[3] without sleep
job[4] without sleep
job[5] without sleep
job[6] without sleep
job[7] without sleep
job[8] without sleep
job[9] without sleepExmaple #2
const QueueHolder = require('queue-holder');
const queue = new QueueHolder();
(async () => {
await queue.hold();
console.log(1);
await queue.sleep(1);
queue.release();
await queue.hold();
console.log(2);
await queue.sleep(1);
queue.release();
})();
(async () => {
await queue.hold();
console.log(3);
await queue.sleep(1);
queue.release();
await queue.hold();
console.log(4);
await queue.sleep(1);
queue.release();
})();Output:
1
3
2
4API
- .hold() - hold queue. This function returns
Promise. - .release() - release our queue and let next job do some stuff. Returns
falseif nothing to release, else returnstrue. - .sleep(seconds = 1) - sleep for
secondsseconds. This function returnsPromise. - .inQueue() - how much tasks in queue.