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