实现一个简单的js队列
class Queue {
constructor() {
this.isPadding = false;
this.queueList = [];
}
push(fn) {
this.queueList.push(fn);
this.run()
}
size() {
return this.queueList.length;
}
run() {
const vm = this;
if (!this.size() || this.isPadding) { // 当前队列为空,或者当前有异步还未执行完成
return
}
this.isPadding = true;
const item = this.queueList.shift();
item(function done() {
vm.isPadding = false;
vm.run()
})
}
}
const request = new Queue();
request.push(function (done) {
setTimeout(() => {
console.log('异步1')
done()
}, 2000)
})
request.push(function (done) {
setTimeout(() => {
console.log('异步2')
done()
}, 2000)
})