Попробуйте:
var bongo = [];
for (i=0; i<10; i++) {
$.get("http://localhost", function(result) {
bongo.push(result);
}
}
Таким образом, каждый результат будет просто помещен в массив, решая проблему правильности индексов массива. Заказ однако не гарантирован. Если это требование, вам понадобится другой подход.
Существует несколько способов решения этой проблемы. Вот один из них: создать объекты для вашего обратного вызова, чтобы сохранить состояние. Вот пример:
function Callback(array, index, result) {
this.array = array;
this.index = index;
this.result = result;
var obj = this;
this.func = function() {
obj.array[obj.index] = obj.result;
};
}
$(function() {
var arr = [];
for (var i=0; i<4; i++) {
var obj = new Callback(arr, i, "result" + i);
setTimeout(obj.func, (5-i) * 100);
}
setTimeout(function() {
console.log(arr);
}, 500);
});
Итак, в вашем случае:
function Callback(array, index) {
this.array = array;
this.index = index;
var obj = this;
this.callback = function(result) {
obj.array[obj.index] = result;
};
}
var bongo = [];
for (i=0; i<10; i++) {
var ob = new Callback(bongo, i);
$.get("http://localhost", ob.callback);
}
В основном вышесказанное сохраняет все данные в объект, и, таким образом, каждый обратный вызов имеет доступ к нужной информации.
Кроме того, имейте в виду, что большинство браузеров ограничивают количество одновременных запросов AJAX, обычно до 2 на хост.