node.js新手在这里。我循环遍历一个对象数组,并设置超时以分别使用每个对象执行一些操作,每个对象的超时也取决于对象中的某些键值。代码在这里:
for (var idx in arr) {
var obj = arr[idx];
interval = obj['key'];
setTimeout(function(){my_func(obj);}, interval);
}
现在失败的是,每当发生超时并调用my_func的代码块时,它总是作用于数组中的最后一个对象,可能是因为变量' obj'那个时候指向它。我该如何解决这个问题?我猜我需要通过引用传递,或类似的东西。如果我在这里遗漏了什么,请指出正确的方向。
答案 0 :(得分:0)
您需要使用闭包:
for (var idx in arr) {
var obj = arr[idx];
(function( obj ){
interval = obj['key'];
setTimeout(function(){my_func(obj);}, interval);
})( obj );
}//for()