在JavaScript 中,for 迴圈是同步的,而回呼等非同步函數則在稍後的時間。因此,在循環內呼叫非同步函數時會出現挑戰,可能會導致意外行為。
雖然閉包可以從其封閉範圍捕獲變量,但它們可能會在 for 循環中引入複雜性。用戶提供的程式碼片段演示了使用閉包捕獲循環索引的嘗試,但由於閉包無法保留循環迭代上下文,這些努力失敗了。
為了解決這個問題,建議的解決方案是使用 forEach() 方法。此方法提供了迭代數組的靈活性,將每個元素及其索引作為參數傳遞給回調函數。
list.forEach(function(listItem, index){ mc_cli.get(listItem, function(err, response) { do_something(index); }); });
使用forEach() 提供幾個優點:
以上是如何解決 JavaScript For 迴圈中的非同步呼叫:為什麼閉包失敗,forEach() 是解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!