Как в JS цикле отправлять Ajax-запросы с интервалом?
Есть код, который проходит по элементам массива и для каждого вызывает Ajax-запрос (jQuery метод $.ajax(...)) к скрипту на сервере. Запросы выполняются к серверу одновременно, и по своим причинам он не справляется и выдаёт правильный ответ через раз. Если выполнять те же самые запросы синхронно, друг за другом, ($.ajax({async: false, ...})), то все ответы приходят верными. Но так замораживается страница, на которой выполняются все эти запросы. Хотелось бы, чтобы это работало в фоне и плавно подгружало данные на страницу.
Можно ли как-то искусственно установить задержку между вызовами асинхронных Ajax-запросов в JavaScript? Бегло пробежался по статье по промисам и async/await на learn.javascript.ru, но не смог понять, как быстро и красиво добиться желаемого. Заранее спасибо! Код выглядит следующим образом:
['Раз', 'Два', 'Три').forEach((item) => {
$.ajax({
url: 'script.php',
type: 'POST',
data: { 'name' : item },
success: (result) => {
// Сделать что-то
}
});
});
Ответы (1 шт):
doChainedAjaxForArray(arr, index) {
if (index < 0 || index >= arr.length)
return;
$.ajax({
url: 'script.php',
type: 'POST',
data: { 'name' : arr[index] },
success: (result) => {
doChainedAjaxForArray(arr, index + 1);
// Сделать что-то
}
});
}
doChainedAjaxForArray(['Раз', 'Два', 'Три'], 0);