关注
class Scheduler {
constructor() {
this.cur = 0;
this.prepare = [];
}
run() {
if (this.prepare.length == 0) return;
const [task, resolve] = this.prepare.shift();
this.cur += 1;
task().then(_ => {
this.cur -= 1
resolve();
this.run();
})
}
add(promiseCreator) {
return new Promise((res, rej) => {
this.prepare.push([promiseCreator, res]);
if (this.cur < 2) {
this.run();
}
})
}
}
const timeout = (time) => new Promise(resolve => {
console.log("in timeout:", time);
setTimeout(resolve, time)
});
const scheduler = new Scheduler();
const addTask = (time, order) => {
scheduler.add(() => timeout(time))
.then(() => console.log(order))
};
addTask(1000, '1')
addTask(500, '2')
addTask(300, '3')
addTask(400, '4')
addTask(100, '5')
// output: 2 3 1 5 4
// 一开始,1、2两个任务进入队列
// 500ms时,2完成,输出2,任务3进队
// 800ms时,3完成,输出3,任务4进队
// 1000ms时,1完成,输出1,任务5进队
// 1100ms时,5完成,输出5
// 1200ms时,4完成,输出4
查看原帖
3 评论
相关推荐
牛客热帖
更多
- 1... 简历上写了AI项目,怎么才能拉开差距?1.0W
- 2... 我用一场重病,换来了与大厂的和解9078
- 3... 不会AI Coding真的不行吗?6581
- 4... 字节跳动-中国交易与广告面经4085
- 5... 战报分享——2026年前端社招找工作感想1938
- 6... 实习还有试用期???1672
- 7... 哈哈哈哈哈哈哈哈哈再也不用写代码啦!!1656
- 8... 学AI+测试力竭的感觉谁懂,WDF越学感觉自己越菜!1545
- 9... 字节跳动-Agent开发实习生 一面(45分钟):1485
- 10... 一家我看不上的初创公司,老板愿意给我开9k实习工资,甚至亲手写了2000多字的offer邮件给我1332
正在热议
更多
# 我的实习日记 #
4172973次浏览 33323人参与
# 城市生存手册 #
8791次浏览 122人参与
# 第3届现代汽车Code Faster急速编程挑战赛 #
35995次浏览 542人参与
# 你的房租占工资的比例是多少? #
104998次浏览 915人参与
# 牛客AI文生图 #
26398次浏览 268人参与
# 如果人间有后悔药 #
12890次浏览 272人参与
# 柠檬微趣笔试 #
5677次浏览 68人参与
# 入职第五天,你被拉进了几个工作群 #
33494次浏览 85人参与
# 入职第一天,你准备什么时候下班 #
129590次浏览 531人参与
# 实习最晚的一次下班是几点 #
40576次浏览 178人参与
# 哪些公司对双非友好 #
245184次浏览 1293人参与
# 双非本科的出路是什么? #
238386次浏览 1671人参与
# 你现在的工作,是“成长”还是“消耗”? #
33829次浏览 259人参与
# 听到哪句话就代表面试稳了or挂了? #
279887次浏览 1800人参与
# 秋招感动瞬间 #
128921次浏览 572人参与
# 为了找工作你投递了多少公司? #
128793次浏览 802人参与
# 用一句话形容你的团队氛围 #
54038次浏览 316人参与
# 现在入门AI应该走哪些方向? #
36259次浏览 205人参与
# 新凯来求职进展汇总 #
85364次浏览 197人参与
# 秋招投递记录 #
433225次浏览 3332人参与
# 你以为的实习VS真实的实习 #
148280次浏览 768人参与
