//整一个异步任务队列就行,以下是比较简单的一种做法,不需要啥promise或es6(class除外)的高级知识。原理大致是在任务函数之外再包一层,目的是为了可以延迟执行。用一个数组标志任务的先后次序。
class Queue{
constructor(){
this.list=[]
}
run(){
var fn = this.list.shift()
fn.call(this)
}
task(name, seconds=1){
var that = this
var fn = function(){
var next = this.list.shift()
console.log('开始执行'+name)
console.log('倒数'+seconds+'秒结束...')
setTimeout(function(){
console.log('结束执行'+name)
next && next.call(that)
}, seconds*1000)
}
this.list.push(fn)
return this
}
}
var q=new Queue()
q.task('任务1', 5).task('任务2',2).task('任务3', 3).run()
--
FROM 124.126.175.*