JQuery AJAX синхронно, но вкладка "паузы" до конца
Я пытаюсь отправить несколько запросов AJAX. Он должен собирать данные в переменную, и после того, как это сделано, он должен вывести переменную. Если я не сделаю это синхронно, он просто выведет переменную до того, как запросы будут выполнены. Можно ли продолжать использовать страницу, пока выполняются запросы? Код может выглядеть примерно так:
for (var i=0;i<10;i++) {
$.ajax({
type: "GET",
url: "http://google.com",
async: false,
data: "",
success:function(data){
total += $(data);
alert(total);
}
}
Это должно загрузить http://google.com/ 10 раз и вывести данные в переменную total. Это не мой код, который я использую (я хотел бы сохранить его как можно более закрытым), а только пример.
Пока он загружает Google 10 раз, страница приостанавливается из-за асинхронности: ложь. Можно ли заставить страницу все еще работать, и в основном делать AJAX в фоновом режиме? Пока он загружается, я ничего не могу сделать на странице.
1 ответ
Если я не сделаю это синхронно, он просто выведет переменную до того, как запросы будут выполнены.
Нет, она будет выводить переменную 10 раз после выполнения каждого запроса. Чтобы избежать этого, используйте counter для количества выполненных запросов:
for (var i=0;i<10;i++) {
$.ajax({
type: "GET",
url: "http://google.com",
async: true,
data: "",
success:function(data){
total += $(data);
if (!--i)
alert(total);
}
}
}