实现一个简单的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)
})
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。