昨晚,我搜索了很多,无法找到问题的解决方案:
我有一个for
循环,其中包含一个函数,它只获取数组中的最新值。
所以,这是一个例子:
obj1.route = new Routeng();
obj2.route = new Routeng();
for(var x in arrObjs) { //arrObjs = array of objects
var g = arrObjs[x];
// I can access properties of all "g" objects
Routelousse.gen(function(res) {
var pathern = res.pathern;
g.routel.staviPather(pathern);
MYOBJ.vehicles.push(g);
alert(g.name); // during the loop I always get the LAST "g" object from "arrObjs"
}, g.point);
}
答案 0 :(得分:2)
它应该是这样的:
obj1.route = new Routeng();
obj2.route = new Routeng();
for(var x=0; x<arrObjs.length; x++) {
var g = arrObjs[x];
(function(ig) {
Routelousse.gen(function(res) {
var pathern = res.pathern;
ig.routel.staviPather(pathern);
MYOBJ.vehicles.push(ig);
alert(ig.name);
}, ig.point);
})(g);
}
在此我们将当前g
作为一个不同的变量传递给该自执行函数,而不是在您当前所在的函数中共享的g
(这不是'阻止范围)并且正在改变for
循环的每次传递。
还要注意for
循环更改...你永远不应该使用for...in
循环来迭代一个数组,使用正常的for
循环