关注
边收集边执行,在任务完成回调之前,最多只能有两个
class Scheduler {
constructor() {
this.taskArr = []
this.count = 0
}
add(promiseCreator) {
return new Promise((resolve, reject) => {
this.taskArr.push({promiseCreator, resolve})
this.run()
})
}
run() {
if(this.taskArr.length && this.count < 2) {
this.count ++
let {promiseCreator, resolve} = this.taskArr.shift()
Promise.resolve(promiseCreator()).then(() => {
resolve()
this.count --
this.run()
})
}
}
}
const timeout = (time) => new Promise(resolve => {
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')
查看原帖
2 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 哪些AI项目值得做? #
9270次浏览 285人参与
# 如果有时光机,你最想去到哪个年纪? #
76856次浏览 857人参与
# 华泰星战营,提前锁定校招offer #
10500次浏览 339人参与
# 实习时最怕听到的一句话 #
8777次浏览 103人参与
# 简历上如何体现你的“AI”能力? #
4805次浏览 110人参与
# 没有面试的日子里,你在做什么 #
6323次浏览 147人参与
# 找不到大厂实习可以去小厂吗? #
8544次浏览 63人参与
# 你总挂在第__面? #
3395次浏览 39人参与
# 汉得笔试 #
3668次浏览 23人参与
# 你知道最慷慨和最抠的公司分别是 #
5961次浏览 52人参与
# 你简历上最心虚的一句话 #
11949次浏览 75人参与
# 90后北漂现状 #
38300次浏览 218人参与
# 机械笔面试考察这些知识点 #
18485次浏览 144人参与
# 备战春招/暑实,现在应该做什么? #
67440次浏览 555人参与
# 机械人还在等华为开奖吗? #
333225次浏览 1618人参与
# 你喜欢工作还是上学 #
98726次浏览 915人参与
# 运营面经 #
171814次浏览 1364人参与
# 实习最晚的一次下班是几点 #
34685次浏览 169人参与
# 考公VS就业,你怎么选? #
101074次浏览 536人参与
# 分享一个让你热爱工作的瞬间 #
70324次浏览 506人参与
# 快消秋招求职进展汇总 #
11882次浏览 43人参与
查看4道真题和解析