@Let_peace

Почему не сохраняется порядок выполнения скрипта с defer?

В конце html страницы загружаю скрипты:
<script defer src="./../js/jquery-3-5-1.js"></script>
<script src="./../js/1.js"></script>
<script defer src="./../js/2.js"></script>
<script defer src="./../js/3.js"></script>
<script src="./../js/4.js"></script>

важно, чтобы 3 скрипт загружался после 2. порядок остальных не важен (ну jquery в самом начале, очевидно)
Несмотря на defer скрипт 3 выполняется до 2
В скрипте 2 есть запрос к json: $.getJSON, так что мб из-за этого происходит всё не так, как я хочу. Короче говоря, не могу понять, в чём проблема, и прошу экспертов помочь))
  • Вопрос задан
  • 102 просмотра
Решения вопроса 2
@DimaIs
Все выполняется как и задуманно, проблема только в том, что $.getJSON является асинхронным методом, иначе говоря результатом выполнения скрипта 2.js является сам запуск этого запроса, но не ожидание его завершения.
Ответ написан
WblCHA
@WblCHA
Какой смысл использовать defer в конце html?

Но это детали, основная суть в том, что синхронные скрипты будут выполняться именно так, как ты и хочешь, сначала один, а только потом второй.
В твоём же случае, очевидно, используется асинхронный код. Таймауты ты вряд ли используешь, а вот промисы да. И если промис не выполняется мгновенно, то далее начинает грузиться скрипт номер 3.

А вообще, зачем вот этот вот ужас, когда есть модули и там эта проблема решается на раз-два?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы