У меня возникла проблема в том, что мне нужно выполнить несколько запросов AJAX на одной странице. Запрос начинается в одно и то же время, но они, похоже, ждут возвращения своего предшественника.Выполнять несколько запросов AJAX параллельно, не ожидая ответа других
Допустим, что для загрузки страницы требуется около 3 секунд. А для загрузки страницы 2 требуется 2 секунды. Я получаю, что оба запускаются одновременно, и запрос страницы1 возвращается после 3 секунд.
Но проблема в том, что запрос страницы2 возвращается через 5 секунд. Почему это так? Я думал, что каждый запрос AJAX будет запускаться в своем потоке. Так почему очередь? Почему второй ждет, когда первый ответит, даже если он начнет?
Как я могу отправить оба запроса и обработать каждый ответ, как только он поступит?
$.ajax({
type: "POST",
url: 'page1.php',
data: { }
})
.done(function(data) {
console.log(data);
});
$.ajax({
type: "POST",
url: 'page2.php',
data: { }
})
.done(function(data) {
console.log(data);
});
Я вижу много примеров, используя этот подход.
$.when(
$.get("/resource1"),
$.get("/resource2"),
$.get("/resource3")
).done(function(response1, response2, response3) {
// do things with response1, response2 and response3;
});
Но насколько я понимаю, он будет обрабатывать ответы, как только все они вернутся.
Любые идеи по этому вопросу?
вам нужно добавить дополнительное свойство 'async: true'. Если вы установите async: true, тогда этот оператор начнет выполнение, и следующий оператор будет вызван независимо от того, завершен ли оператор async. – Manoj
'async: true' по умолчанию не нужно явно устанавливать его. @Manoz – Jai
Yep thats true, async по умолчанию true, и я уже пробовал это. – ZSchneidi