管理Promise.all 中的記憶體消耗
在某些使用大量Promise 的場景中,如所提供的程式碼所示,記憶體消耗可能成為一個問題。具體來說,當每個 Promise 的已解析資料是不必要的並且消耗大量記憶體時,就會出現此問題。
為了解決此問題,建議限制同時活動或正在運行的 Promise 的數量,而不是同時擁有所有 58k 承諾的 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.all 處理大量 Promise 時如何減少記憶體消耗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!