在 JavaScript 中,for 循环是同步的,而回调等异步函数则在稍后的时间。因此,在循环内调用异步函数时会出现挑战,可能会导致意外行为。
虽然闭包可以从其封闭范围捕获变量,但它们可能会在 for 循环中引入复杂性。用户提供的代码片段演示了使用闭包捕获循环索引的尝试,但由于闭包无法保留循环迭代上下文,这些努力失败了。
为了解决这个问题,推荐的解决方案是使用 forEach() 方法。此方法提供了迭代数组的灵活性,将每个元素及其索引作为参数传递给回调函数。
list.forEach(function(listItem, index){ mc_cli.get(listItem, function(err, response) { do_something(index); }); });
使用 forEach() 提供几个优点:
以上是如何解决 JavaScript For 循环中的异步调用:为什么闭包失败,forEach() 是解决方案的详细内容。更多信息请关注PHP中文网其他相关文章!