javascript - for循环,保持变量

标签 javascript for-loop asynchronous

假设我有当前代码:

for(var n = 0; n != 5;n++){
  alert(i);
}

它会提醒 0,1,2,3,4

虽然现在假设我需要执行一个异步函数,它有一个可以作为参数传递的返回函数。

for(var n = 0; n != 5;n++){
  doAsync(function(){alert(n);});
}

function doAsync(func){
  setTimeout(func, 1000);
}

这将提醒“5”,5 次。有没有办法让 n 变量与循环中的变量保持不变?我的意思是我希望它执行 0,1,2,3,4。

谢谢,我感谢所有帮助。

最佳答案

这是一个典型的闭包问题。

您可以按以下方式更改您的代码

for (var n = 0; n != 5; n++) {
  alert(n);
}


for (var n = 0; n != 5; n++) {
  doAsync(function(n) {
    alert(n);
  }.bind(null,n));
}

function doAsync(func) {
  setTimeout(func, 1000);
}

希望对你有帮助

关于javascript - for循环,保持变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317410/

相关文章:

javascript - 检测文本输入的值是否在没有事件的情况下发生变化

javascript - AngularJS:在异步验证器完成之前阻止表单提交

javascript - 自动更改 <div> JQuery

vba - 无法理解如何在 Excel VBA 中使用 for...next 循环

Javascript for 循环直到出错

java - 需要解释以下java代码的输出

javascript - 从 JSP 用 Ja​​vascript 发布表单

javascript - 加载脚本会动态阻塞渲染吗?

iOS - 同时运行多个异步请求

c# - 用于大量、低延迟 http 请求的异步与线程