92. Promiseをthrottleする

JavaScript

少し工夫が必要  - accepted / - tried

仮に100のAPIを叩いてデータをとることになる、しかもできるだけ速くしたい、

Promise.all()を使うと、100のリクエストが一気にサーバーに届き、スペックの低いサーバーが死んでしまう。

APIコールに制限をかけて、常に最大5つのリクエストが進行中にしてください。

throttlePromises()関数を作ってください。一つ目の引数はpromiseを返す関数の配列、二つ目は同時進行するAPIの最大数。


// 使い方は `Promise.all`とほぼ一緒。
throttleAsync(fetchers, 5).then((data) => {
  // ...
}).catch((err) => {
  // ...
})

上記のコードで、サーバーが助かる!

常にもっといい方法を求めよう。

(87)