1.0.3 • Published 2 years ago

@fengdi-spore/async-queue v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

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) );
1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago