我在循环范围内进行ajax调用,我需要成功回调才能使用调用它的正确“i”。
像这样(伪JavaScript代码):for (i = 1 ; i <= 10 ; ++i)
{
$.ajax( { ....,
success : function(data) {
// I want to use the correct i HERE
}
});
}
显然它不起作用,因为在调用成功回调时,i值与回调不同步...
答案 0 :(得分:6)
对此的规范解决方案是使用立即执行的函数表达式来创建闭包。
for (i = 1 ; i <= 10 ; ++i)
{
(function (i) {
$.ajax({
success : function(data) {
// I want to use the correct i HERE
}
});
})(i);
}
答案 1 :(得分:4)
只需创建一个功能范围:
for (i = 1 ; i <= 10 ; ++i) {
(function(i) {
$.ajax({
success : function(data) {
console.log( i );
// I want to use the correct i HERE
}
});
}(i));
}