Promise.all でのメモリ消費の管理
提供されたコードで例示されているように、大量の Promise が使用される特定のシナリオでは、メモリ消費が問題になる可能性があります。具体的には、各 Promise からの解決されたデータが不要で、大量のメモリを消費する場合に問題が発生します。
この問題に対処するには、同時にアクティブまたは実行中の Promise の数を制限することをお勧めします。 58k のすべての Promise aktif を同時に持つのではなく。これは、同時実行制限を X に設定することで実現できます。Promise が解決されると、キュー内の次の Promise が実行され、常に X 個を超える Promise がアクティブにならないようになります。
または、次のようになります。解決されたデータが必要ない場合は、単純な値に置き換えてメモリ消費を最小限に抑えることができます。 提供されているコード例は、これを実現する方法を示しています。
const p = backgroundScheduler.getClanProfile(clanTags[i], true).then(data => { return 0; // make resolved value just be a simple number // so other data is now eligible for GC });
Promise 同時実行管理のカスタム実装には、mapConcurrent 関数を使用できます。これは項目の配列を反復処理し、Promise を返す関数を実行し、常に最大 X 個の処理中のリクエストのみを許可します。
処理中の Promise の数を管理することで、効果的に削減できます。非同期操作の効率的な実行を確保しながらメモリ消費量を削減します。
以上が多数の Promise で Promise.all を使用する場合、メモリ消費を削減するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。