class Quene {
constructor(ms) {
this.quene = [];
this.interval = ms;
this.timer = null;
}
enquene(cb) {
this.quene.push(cb);
this.consume();
}
consumeItem() {
const cb = this.quene.shift();
cb();
if (!this.quene.length) {
clearInterval(this.timer);
this.timer = null;
}
}
consume() {
if (!this.timer) {
this.timer = setInterval(this.consumeItem.bind(this), this.interval);
}
}
}
const q = new Quene(1000);
q.enquene(() => {
console.log(new Date(), 1);
});
q.enquene(() => {
console.log(new Date(), 2);
});
q.enquene(() => {
console.log(new Date(), 3);
});
记一个延时执行队列的实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 除了上边提到的『主线程』中调用『主队列』+『同步执行』会导致死锁问题。实际在使用『串行队列』的时候,也可能出现阻塞...
- 一,dispatch_apply 的用法 当我们需要进行循环遍历时,例如遍历一个数组,我们一般会使用 For-In...
- 所以这里同步应该不是一起、而是共同完成的意思,可理解为协调就是按预定的先后次序进行工作,好比:不要和我抢了,你先等...
- 1. GCD 任务和队列 学习 GCD 之前,先来了解 GCD 中两个核心概念:『任务』 和 『队列』。任务:就是...
- GCD 串行队列,并行队列,同步执行,异步执行的探讨(附练习题)。 并行队列 + 异步执行 原因 并行队列: 任务...