1.1.0 • Published 6 years ago

queue-holder v1.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

QueueHolder

Asynchronous queue

Install

npm i queue-holder

Exmaple #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 sleep

Exmaple #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
4

API

  • .hold() - hold queue. This function returns Promise.
  • .release() - release our queue and let next job do some stuff. Returns false if nothing to release, else returns true.
  • .sleep(seconds = 1) - sleep for seconds seconds. This function returns Promise.
  • .inQueue() - how much tasks in queue.
1.1.0

6 years ago

1.0.0

6 years ago