Эффективным способом является использование метода DeQred в jQuery, который синхронизирует / асинхронные запросы к серверу и ожидает deferred.resolve (), а затем возвращает объект отложенного обещания. Выглядит немного утомительно, но небольшое исследование, безусловно, полезно для больших данных. (функция tvanfosson хорошо работает в этом случае, но когда я работал над данными Google Analytics, большое количество информации сводило меня с ума, и поэтому мне нужно найти это решение)
function showResults(name) {
var deferred = $.Deferred, requests = [];
requests.push($.ajax({url:"/path/to/uri/?name=" + name, type: "GET", async: false}).done(function(d) {
//alert or process the results as you wish
}));
$.when.apply(undefined, requests).then(function() { deferred.resolve(); });
return deferred.promise();
}
возвращенный объект обещания также можно использовать с $.when(showResults('benjamin')).done(function() { });
для изменений после публикации (например, настройки графика / графика и т. Д.). полностью многоразовый.
Вы также можете поместить эту функцию в цикл запросов $ .deferred, например,
function updateResults() {
var deferred = $.Deferred, requests = [];
requests.push($.ajax(url:"/path/to/names/?nameArr=" + jsonArrOfNames, type: "GET", async: false}).done(function(res) { requests.push(showResults(res[0]));}) );
$.when.apply($, requests).then(function() { deferred.resolve(); });
return deferred.promise();
}