@fengdi-spore/async-queue
v1.0.3
Published
```javascript
Downloads
7
Readme
AsyncQueue 异步队列
//队列有任务就开始按顺序执行,所有任务完成就结束触发end事件,再次加入任务时再次自动开始
let aq = new AsyncQueue({
autoRunWithPush: true
});
aq.push(async ()=>{
//做第1件事
}).push(async ()=>{
//做第2件事
});
aq.push(async ()=>{
//做第3件事
});
let wait = function(time, res){
return new Promise(resolve=>{
setTimeout(function(){
resolve(res)
}, time)
})
};
let createTask = function(time, id){
return function(){
console.log(`正在执行任务:${id},耗时${time}`);
return wait(time, id)
}
}
// 实例化异步队列
let aq = new AsyncQueue({
autoRunWithPush: true
});
// 每一个任务完成触发
aq.on('step', function(res){
console.log('完成任务', res);
});
// 当队列空触发
aq.on('end', function(res){
console.log('队列任务结束,结果为', res);
});
aq.push( createTask(1000, 1) );
await wait(1000);
aq.push( createTask(2000, 2) );
aq.clear();
aq.push( createTask(1000, 3) )
.push( createTask(1200, 4) )
.push( createTask(1000, 5) );
// await wait(2400);
// aq.clear();
// await wait(1000);
aq.push( createTask(1000, 6) );