У меня есть массив данных (arrData), который я зацикливаю (10 элементов), вызывая ajax-запрос для каждого. В настоящий момент каждый вызов ajax выполняется параллельно. Это означает, что сервер получает 10 вызовов одновременно и отправляет данные обратно в любом порядке, в котором он рассчитывает каждый раз. Чтобы немного освободить сервер, я хочу теперь поставить свои вызовы в очередь. Следовательно, когда ajax получает один набор данных, он вызывает следующий поиск. Есть ли способ сделать это встроенным в JQuery или я должен взломать свой цикл и добавить рекурсивный обратный вызов для каждого?
$.each(arrData, function(k,v) {
$.getJSON(lookupPath,
{ key:k, val:v },
function(data) {
console.log(data); //loopback here?
}
);
});
ОБНОВЛЕНИЕ: я пошел со следующим (как предложено Скоттом М.), чтобы сделать это:
function doLookup() {
if(k < arrData.length) {
var v = arrData[k];
$.getJSON(lookupPath,
{ key:k, val:v },
function(data) {
console.log(data);
k++;
doLookup();
}
);
}
}
var k = 0;
doLookup();