中文文档
A queue to control Promise task's concurrency and pause/resume.
npm i np-queue
const q = new Queue();
const delay = (value) =>
new Promise(resolve => {
setTimeout(() => resolve(value), 1000);
});
q.add(()=>delay(1)).then(console.log);
q.add(()=>delay(2)).then(console.log);
const delay_wrap = q.wrap(delay);
delay_wrap(3).then(console.log);
delay_wrap(4).then(console.log);
You will see it output 1,2,3,4 interval by 1 seconds.
You can choose the queue's Promise library, default is global.Promise
.
Limit how much Promise task can concurrency run, default is 1.
The async function you define, it return a Promise
or anything, note it will not receive any arguments so you must wrap your arguments in its code.
The task key you define, can use any type except undefined
, if you give one key that already exist in queue, add()
will return a rejection Promise
.
It will be return a function that wrap the fn
, use the queue's concurrency to limit how much fn
can be execute on same time.
For example, you can fast define one function it only can serial execute:
const serial_fn = new Queue().wrap(fn);
On many time it's useful.
Pause/resume this queue, no more word.
mocha