Skip to content

a queue concurrency limit base on Promise.|基于Promise的队列并发控制

License

Notifications You must be signed in to change notification settings

Robin-front/queueMapLimit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

queueMapLimit

a queue concurrency limit base on Promise.

install

npm i queue-maplimit --save
//or
yarn add queue-maplimit

usage

const QueueMapLimit = require("queue-maplimit");
const queue = new QueueMapLimit(limit);
queue.add(arr, iteratee); //  will return a Promise

Parameters:

Name Type Description
arr Array A collection to iterate over.
limit number The maximum number of async operations at a time.
iteratee AsyncFunction An async function to apply to each item in arr. The iteratee should complete with the transformed item.
return Promise Promise.then(result => {});

example

const QueueMapLimit = require("queue-maplimit");
const queue = new QueueMapLimit(5);
queue
  .add(
    arr,
    value =>
      new Promise((resolve, reject) => {
        console.log("begin", value);
        setTimeout(() => {
          console.log("end", value);
          random(0, 10) > 9 ? reject(undefined) : resolve(value);
        }, random(1, 50));
      })
  )
  .then(result => {
    console.log("task done ", result);
  })
  .catch(err => {
    console.error("task has error ", arr);
  });

test

test.js

About

a queue concurrency limit base on Promise.|基于Promise的队列并发控制

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published