一个依赖Promise
的异步队列模块,可以方便的控制并发量
npm install --save xz-promise-queue
首先创建一个promiseQueue
实例
const PromiseQueue = require('xz-promise-queue');
let promiseQueue = new PromiseQueue(5 [,options]);
options
传递的参数,是一个对象,包括以下几个键值
refuse // 超过并发数时,是否放弃执行剩下的函数
timeout // 超时时间,默认不设置
ratio // 设置队列长度的比率
只需要使用一个API,即可方便的控制我们的大量Promise
异步流
push
我们只需要提供一个返回Promise
的函数即可
for (let i = 0; i < 100; i++) {
let time = parseInt(Math.random() * 1000);
promiseQueue.push(() => new Promise((resolve, reject) => {
setTimeout(() => {
console.log(i);
resolve();
}, time)
}))
}
full
当队列正在排队时会触发,并且每次从队列中执行新函数时再次触发
promiseQueue.on('full', (data) => {
console.log(data);
});
achieve
当所有异步函数都执行完成后,触发achieve
事件
error
当执行的Promise
中发生错误时,会触发error
事件
timeout
当有异步函数发生超时的时候,触发timeout
事件(您必须指定超时时间)