异步控制并发数
使用昨天练过的Promise来封装一个函数,调用这个函数可以控制并发任务数量,避免过多任务同时执行,多余的任务放在等待队列里,等执行线程空出来后会取出等待队列里的任务执行;
function limitTask(taskList = [], limit = n) {
return new Promise((resolve, reject) => {
const len = taskList.length
let count = 0
// 同时启动limit个任务
while(limit > 0) {
start ()
limit -=1
}
function start() {
// 从数组中拿取第一个任务
const task = taskList.shift()
if(task) {
console.log("执行成功");
if(count == len -1) {
// 最后一个任务完成
resolve()
}else {
// 完成之后,启动下一个任务
count++
start()
}
}
}
})
}
//测试
limitTask(['task1', 'task2', 'task3', 'task4', 'task5'],3)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?