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