Мне никогда раньше не приходилось использовать функции обратного вызова, поэтому я, возможно, совершил совершенно глупую ошибку. Думаю, я частично понимаю проблему, но не знаю, как ее решить.
Мой код (немного упрощенный):
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 сейчас не определено.