【发布时间】:2016-09-09 17:33:20
【问题描述】:
node.js 新手在这里。我正在遍历一组对象,并为单独使用每个对象执行一些操作设置超时,每个对象的超时也取决于对象中的某些键值。代码在这里:
for (var idx in arr) {
var obj = arr[idx];
interval = obj['key'];
setTimeout(function(){my_func(obj);}, interval);
}
现在这里失败的是,每当发生超时并且调用 my_func 的代码块时,它总是作用于数组中的最后一个对象,可能是因为当时的变量 'obj' 指向它。我该如何解决这个问题?我猜我需要通过引用传递,或类似的东西。如果我在这里遗漏了什么,请指出正确的方向。
【问题讨论】:
-
由于你使用的是Node,所以使用
let而不是var,问题就解决了。顺便说一句,这与“通过引用传递”(JavaScript 无论如何都没有)无关。
标签: javascript node.js settimeout pass-by-reference