Показать сообщение отдельно
  #1 (permalink)  
Старый 16.11.2018, 09:12
Аспирант
Отправить личное сообщение для Svorg Посмотреть профиль Найти все сообщения от Svorg
 
Регистрация: 16.11.2018
Сообщений: 38

Можно ли вызывать асинхронный XMLHttpRequest якобы синхронно? Или Promise потянут?
Доброе утро!
Допустим мне надо такое:
  1. Объявить пустой массив.
  2. Вызвать асинхронный XMLHttpRequest.
  3. Дождаться его выполнения и проанализировать response.
  4. Выполнить цикл, количество итераций которого становится понятным лишь на предыдущем шаге.
  5. В теле цикла мне надо:
    1. Сделать паузу в 500мс.
    2. Создать и заполнить FormData (для его заполнения может потребоваться дополнительный XMLHttpRequest, результат которого соответственно надо также дождаться).
    3. Выполнить асинхронный XMLHttpRequest с текущим FormData.
    4. Дождаться его выполнения и проанализировать response.
    5. Если response чем-то мне не понравился - надо опять сделать паузу в 500мс и повторить этот же запрос (и повторять до тех пор, пока не станет нормальным).
    6. Если response нормальный - то сложить его в массив.
  6. После окончания цикла надо обработать массив со всеми результатами.
  7. Возможно потребуется вложенный цикл, но это пока не точно.
Явно вызывать XMLHttpRequest синхронно (третий параметр open) - невозможно, оно стреляет всякие ошибки, да и пишут мол устарело. Какую-то может обёртку можно придумать?
Читал про Promise, но как с ними сгородить подобное? И как бы ничё что цикл может быть с сотнями итераций, возможно тысячами, не залипнет ли нахрен..?

Основной целевой браузер Chrome. Никакие библиотеки не используются, никаких jQuery и прочего.
Кто-то может посоветовать что-то? Спасибо!
Ответить с цитированием