场景假设有 10 个请求,但是最大的并发数目是 5 个,并且要求拿到请求结果,这样就是一个简单的并发请求控制模拟利用 setTimeout 实行简单模仿一个请求通过这样来模拟请求,本质就是 Promise没有并发控制的时候可以看到输出是 5 2 3 4 1 ,按 timeout 的时间输出了并发条件假设同时间最大并发数目是 2,创建一个类第一种并发控制想一下,按最大并发数拆分 Promise 数组,如果有 Promise 被 fulfilled 的时候,就移除掉,然后把 pending 状态的 Promise ,加进来。Promise.race 可以帮我们满足这个需求可以看到输出已经变了,为什么会这样呢,分析一下,最大并发数 2. 第二种方案可以利用 await 的机制,其实也是一个小技巧await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。
暂无评论