1 Star 1 Fork 0

我们/博客文档

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
test.ts 1.13 KB
一键复制 编辑 原始数据 按行查看 历史
= 提交于 2023-08-07 08:19 . 任务案例
type TaskEntity<T extends any> = () => Promise<T>
class SuperTask<T extends any> {
private runningCount = 0
private taskList: Array<TaskEntity<T>> = []
constructor(private runCount = 0) {
}
addTask(task: TaskEntity<T>) {
this.taskList.push(task)
this.run()
}
private run() {
if (this.runningCount < this.runCount) {
if (this.taskList.length > 0) {
const task = this.taskList.shift()!
this.runningCount++
task().then(res => console.log(res)).finally(() => {
this.runningCount--
this.run()
})
}
}
}
}
const timeOut = (time: number, content: string): Promise<string> => {
return new Promise(resolve => {
setTimeout(() => {
resolve(content)
}, time)
})
}
const superTask = new SuperTask(3)
superTask.addTask(() => timeOut(3000, '3000'))
superTask.addTask(() => timeOut(1000, '1000'))
superTask.addTask(() => timeOut(2000, '2000'))
superTask.addTask(() => timeOut(4000, '4000'))
superTask.addTask(() => timeOut(1000, '1000'))
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mortal-nf/blog-document.git
git@gitee.com:mortal-nf/blog-document.git
mortal-nf
blog-document
博客文档
deploy

搜索帮助