92. Promise节流

JavaScript TikTok Google

中等难度  -通过 / -执行

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

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

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

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

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

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

始终思考更好的解决办法