Мне никогда не приходилось использовать функции обратного вызова, поэтому я, возможно, совершил совершенно тупую ошибку. Я думаю, что я немного понимаю проблему здесь, но не как ее решить.
Мой код (немного упрощен):
for (var i = 0; i < some_array.length; i++) {
var title = some_array[i];
$.getJSON('some.url/' + title, function(data) {
do_something_with_data(data, i);
}
Теперь, насколько я понимаю, эта анонимная функция будет вызываться только в том случае, если getJSON() получил данные. Но к этому моменту i
не имеет значения, которое я бы требовал. Или, насколько мое наблюдение идет, оно имеет последнее значение, которое было бы после завершения цикла (не должно ли оно быть вне пределов?).
В результате, если массив имел размер 6, do_something_with_data()
будет вызываться пять раз со значением 5.
Теперь я подумал, просто передайте i
анонимной функции
function(data, i) { }
но это не представляется возможным. i теперь undefined.