92. Promise节流

中等难度  -通过 / -执行

假设你需要调用100个API获取数据,并且需要越快越好。

如果使用Promise.all(),100个请求会同时到达你的服务器,如果你的服务器性能很低的话,这就会是个负担。

节流API请求,使得任何时刻最多只有5个请求正在进行中

你需要实现一个throttlePromises() 函数来达到目的。这个函数接受一个promise生成函数的数组,和一个同一时刻进行中的API请求最大数量。


throttleAsync(callApis, 5).then((data) => {
  // 数据和使用`Promise.all`得到的 一样
}).catch((err) => {
  // 发生错误的时候,也和`Promise.all`的行为一样
})

执行上述代码过后,因为任何时候都不会超过5个API请求在进行,性能低下的服务器得救了。

注意特例。

(1)
(123)