Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Асинхронные запросы с ожиданием (https://javascript.ru/forum/jquery/70048-asinkhronnye-zaprosy-s-ozhidaniem.html)

koha345 06.08.2017 19:45

Асинхронные запросы с ожиданием
 
Имеется main-функция, в которой висит цикл.
В цикле для каждого элемента массива вызывается 2 асинхронные sub-функции.
Обе функции отправляют ajax-запросы к сервису на получение данных. Сервис не предусматривает отдачу сразу всех данных. Данные приходится загружать пачками, по чуть-чуть. После получения ответа снова вызывается эта же функция (рекурсивно) до тех пор, пока не будут получены все записи. Мне необходимо сделать так, чтобы после каждого запроса выполнялась пауза в 2 секунды и таким образом, чтобы это учитывалось между sub-функциями.
Т.е. запускается цикл с элементом 1. Вызывается асинхронная sub-функция с элементом 1. После получения данных выжидание 2 секунды и снов запрос в эту же функцию. Если все данные получены, тогда снова пауза 2 секунды и идет переход к следующей sub-функции, которая так же выполняется, ожидает 2 секунды и снова выполняется до получения всех данных.
Далее для цикла берется элемент 2 и уже для него все повторяется, что было описано выше.
Таким образом на сервис отправляется запрос и я уверен, что после выполнения будет пауза в 2 секунды.
Я не могу ajax-сделать синхронным, т.к. он подвесит страницу.
Я видел примеры с promise, но как их использовать в цикле и еще в рекурсии - не понимаю.

Rise 07.08.2017 01:03

koha345,
Алгоритм такой ajax => complete/always => setTimeout => ajax


Часовой пояс GMT +3, время: 12:43.