如何Promise.all()
用一个固定容量的动态队列来实现
,即在一个时间点,例如,最多处理 10 个并行请求?
const promises = Array(10)
.fill(null)
.map((item, i) => new Promise((resolve) => resolve(i)))
const arr = await PromiseAllByChanck.all(promises , 2)
换句话说,这样查询是由查询数组段逐块执行的?
如何Promise.all()
用一个固定容量的动态队列来实现
,即在一个时间点,例如,最多处理 10 个并行请求?
const promises = Array(10)
.fill(null)
.map((item, i) => new Promise((resolve) => resolve(i)))
const arr = await PromiseAllByChanck.all(promises , 2)
换句话说,这样查询是由查询数组段逐块执行的?
事实是,创建的每个Promise实际上都是发送执行的请求,因此,在所需的解决方案中,不能存在“promise”数组这样的实体
promises
。也就是说,它们都是从这一行创建并“发送执行”的:
为了防止这种情况,您可以“转义”它们,或者更确切地说,将它们转换为异步函数:
然后带有内部队列的模拟
Promise.all()
将如下所示: