Skip to content
forked from ngtmuzi/np-queue

A queue to control Promise task's concurrency and pause/resume.

License

Notifications You must be signed in to change notification settings

ginwaac/np-queue

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

np-queue

Build Status Coverage Status

中文文档
A queue to control Promise task's concurrency and pause/resume.

Install

npm i np-queue

Usage

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.

API

new Queue({promiseLibrary,concurrency})

promiseLibrary

You can choose the queue's Promise library, default is global.Promise.

concurrency

Limit how much Promise task can concurrency run, default is 1.

queue.add(fn,[key])

fn

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.

key

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.

queue.wrap(fn, [thisArg])

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.

queue.pause & queue.resume

Pause/resume this queue, no more word.

Test

mocha

About

A queue to control Promise task's concurrency and pause/resume.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%