タイトルの通り、http requestなどの処理をするPromiseを大量に生成する以下のようなコードで並行処理される上限を設けたいです。
以下のコードは、配列の要素数が少ないうちは期待した動作をしますが、要素数が多いとリクエスト先からエラーが返ります。
エラーの内容は失念しましたが、おそらく処理上限を超えたのでリクエストが破棄されたような動作をしました。
Pendingの状態にあるPromiseが上限を超えて追加されようとする時、一旦sleepで保留して、上限を下回り次第追加する方法を考えましたが、Promiseの状態を取得する方法、またPromiseがfulfilledになったときにsleepを解除する方法がわかりません。
上記の私が考えた方法以外にPromiseの処理上限を設ける方法がありましたら教えてください。
javascript
1const arrPromises = arrParams.map(param => new Promise((resolve, reject) => { 2 httpRequest(param) 3 .then(resolve) 4 .catch(reject); 5})); 6 7Promise 8 .all(arrPromises) 9 .then(console.log); 10 11
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2017/05/23 02:16
2017/05/23 02:21