92. Promiseをthrottleする
シェアしよう
少し工夫が必要 - accepted / - tried
仮に100のAPIを叩いてデータをとることになる、しかもできるだけ速くしたい、
Promise.all()
を使うと、100のリクエストが一気にサーバーに届き、スペックの低いサーバーが死んでしまう。
APIコールに制限をかけて、常に最大5つのリクエストが進行中にしてください。
throttlePromises()
関数を作ってください。一つ目の引数はpromiseを返す関数の配列、二つ目は同時進行するAPIの最大数。
// 使い方は `Promise.all`とほぼ一緒。throttleAsync(fetchers, 5).then((data) => {...}).catch((err) => {...})
上記のコードで、サーバーが助かる!