Javascript-for语句的运行速度比我的函数快 for(变量i=0;i
函数fetchElementDetails()进行一个ajax调用,需要一些时间才能完成,此时for语句将继续,变量childId将更改值。如何使for语句等待函数fetchElementDetails()完成,然后转到下一次迭代Javascript-for语句的运行速度比我的函数快 for(变量i=0;i,javascript,jquery,synchronization,Javascript,Jquery,Synchronization,函数fetchElementDetails()进行一个ajax调用,需要一些时间才能完成,此时for语句将继续,变量childId将更改值。如何使for语句等待函数fetchElementDetails()完成,然后转到下一次迭代 我是javascript的新手,所以任何评论都是好的,我正在寻找最佳实践,因为我总是遇到这种(同步)问题。开火 正如问题注释中指出的,这是闭包的一个普遍问题-如果您正在学习JavaScript,了解它是值得的:) 最简单的修复方法是将i绑定到for循环中的函数范围内:
我是javascript的新手,所以任何评论都是好的,我正在寻找最佳实践,因为我总是遇到这种(同步)问题。开火 正如问题注释中指出的,这是闭包的一个普遍问题-如果您正在学习JavaScript,了解它是值得的:) 最简单的修复方法是将
i
绑定到for
循环中的函数范围内:
for (var i = 0; i < data.length; i++) {
var childId = data[i].child_id;
fetchElementDetails(
childId,
childTableNameByParentTableName(tableName),
function (d) {
for (var j = 0; j < d.extraVariables.length; j++) {
if (endsWith(d.extraVariables[j].name, "_id")) {
var selector = $("td[data-childId="+childId+"]")
.filter("[data-type=" + d.extraVariables[j].name + "]");
selector.empty();
selector.append(d.extraVariables[j].value);
}
}
}
);
}
for(变量i=0;i
经典的闭包问题。
for (var i = 0; i < data.length; i++) {
(function(i) {
var childId = data[i].child_id;
// ...
})(i);
}