0
我在for
循环中放置了一个异步回调函数(类似$.ajax
)。这看起来多少有点像(编辑:更新的代码,见注释):JSHint:循环中的异步函数
var i = 0;
for (; i < 5; i++) {
(function(index) {
$.ajax({
url: "",
success: function() {
console.log(index);
}
});
})(i);
}
它的工作,但JSHint给了我一个警告,说是这样的:
“不要把函数中环“
通常我可以将我的callback
函数放在我的循环之外并在每次迭代时调用该函数。不幸的是,我需要访问循环内分配的变量(例如i
)。所以我在寻找一个解决方案做类似如下:
var i = 0;
function callback(data) {
// I want to have access to "i" (0, 1, 2, 3, 4) and the AJAX "data"
// in this function. But I only have access to "data", because "i"
// will always be 5
}
for (; i < 5; i++) {
$.ajax({
url: "",
success: callback
});
}
那么,在你的第一个例子中,'i'在所有的回调中也是'5'。请参见[JavaScript闭合内部循环 - 简单实例](http://stackoverflow.com/q/750486/218196)。 – 2014-08-29 20:47:35
您是否必须循环...您不能发送一个包含所有数据的请求吗? – tymeJV 2014-08-29 20:47:40
只需修复您的for循环并将此行添加到您的ajax调用'async:false' – Hackerman 2014-08-29 20:54:53