Поскольку ваши вызовы асинхронные, обратные вызовы не выполняются до тех пор, пока все вышеперечисленные строки не будут запущены. Это означает, что param будет установлен в значение 2, прежде чем ваш первый запрос get разрешится.
Создайте уникальные имена для ваших переменных, таких как param1, param2, вместо простого переназначения param.
Edit:
Проверьте этот код:
for (var i = 0 ; i < 3; i++) {
param = i;
$.get('http://www.google.com',genCallback(param));
param = i+5;
}
function genCallback(param) {
var cb = function (data) {
alert(param);
}
return cb;
}
Честно говоря, я не совсем уверен, как это работает. Вы заметите, что он предупреждает числа 0, 1, 2 в некотором порядке, хотя я постоянно меняю параметр. Вместо того, чтобы создавать анонимную функцию в get напрямую, я создаю функцию на основе параметра. Я думаю, что происходит замыкание над cb
, которое включает локальный параметр genCallback во время его выполнения.