javascript - 将值传递给nodejs中的回调

标签 javascript node.js asynchronous

Possible Duplicate:
Javascript closure inside loops - simple practical example

for (i = 0; i < 100; i++) {
    setTimeout(function() {
        console.log(i);
    }, 500)
}

在上面的代码中,它只会打印 100。我知道原因了。但是我如何将当前的 i 值发送到 setTimeout 中的回调?

最佳答案

在循环内使用匿名函数来创建闭包:

for (i = 0; i < 100; i++) {

  (function(i){

    window.setTimeout(function() {
      console.log(i);
    }, 500)

  })(i);

}

当您在调用时将值传递给函数时,该值将被复制,并且该函数的每个实例都将拥有自己的副本,该副本在循环计数器更改时不会更改。

关于javascript - 将值传递给nodejs中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547042/

相关文章:

javascript - 如何在Leaflet中标记类似于Google map 的标记

javascript - Google Maps Api V3 - 更改 map div

javascript - Webpack 从 %appdata% 导入

node.js - 运行 2 个重复的异步函数,而不在等待时暂停另一个函数

c++ - Qt中的异步函数调用

Node.js 请求模块获取 ETIMEDOUT 和 ESOCKETTIMEDOUT

javascript - AngularJS:如何在 Controller 之间传递变量?

javascript - 使用原型(prototype) Javascript 框架搜索具有特定文本的节点

node.js - 在 Express 中测试中间件时提供 session

node.js - 解析云代码DoesNotMatchKey