在for 循環中呼叫非同步函數:克服閉包限制
JavaScript 的閉包提供了強大的作用域機制,但是當與for 迴圈中的非同步函數。當循環內執行的回調依賴 i 時,這個問題就會出現,它總是反映最後一次循環迭代,產生意外的結果。
閉包陷阱
如圖所示提供的程式碼片段,嘗試使用閉包作為回呼的參數引入了範圍問題。儘管使用 (function(x){return x})(i) 或 create_closure(i)() 等閉包來捕獲當前迭代索引,但返回值始終反映最終循環迭代。
更好的解決方案:forEach
要解決此挑戰,請考慮利用 JavaScript 的 forEach 方法,該方法會迭代數組中的元素。它提供列表項目及其索引作為回調的參數,從而消除了閉包複雜性。
透過使用 forEach,每個回調呼叫在其自己的範圍內運行,存取該特定迭代的正確索引。這確保 do_something(i) 可以按預期存取 for 迴圈內的預期索引。
以上是在 JavaScript 中的 For 迴圈內呼叫非同步函數時如何避免閉包陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!