@lilwings

Как работает async js?

Всем привет!)

Такой вопрос возник.
У меня много модулей es6 которые собираются через webpack в один файл, и там спокойно хранятся, а к модулю можно спокойно добраться через объект указанный в webpack.

Так пример из жизни:

В header страницы помещен собранный скрипт с async загрузкой.
Но так же на странице внизу(может быть и в середине) есть класс который использует модули из файла который подключен в header async.

Может ли случиться так что файл не успеет загрузиться и классы на странице которые используют классы из файла не будут работать?

P.S: Мне кажется да, как избежать ошибки?

P.S.S: В бандле(вроде так называеться собранный файл) есть класс который генерирует preloader, и еще очень много классов, и прямо после body класс обращается к классу из бандла, а bunndle еще не загружен, что в такой ситуации делать?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 2
@historydev Куратор тега JavaScript
Острая аллергия на анимешников
Не подключать файлы в разброс.
Ответ написан
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
У тега script кроме атрибута async есть еще defer. Скрипты с этим атрибутом загружаются все асинхронно, но выполняются потом в том порядке, в котором записаны в html (только они все должны быть отдельными файлами, не инлайновыми скриптами).

Также, если у вас уже есть много скриптов, да еще и месиво из инлайново вставленных и асинхронно подгружаемых, причем все друг от друга зависят и оперативно это не починить, то можно организовать маленькую систему событий, которая будет в себе хранить информацию о том, кто загрузился, а кто - нет (чтобы не получился классический callback-hell). Она должна быть первым скриптом на странице. А загрузившиеся потом скрипты будут ей сообщать "я загрузился", а потом у нее спрашивать "ну что, вон тот уже загрузился?" а она такая "да", и они будут выполняться сразу, или "нет, пока нет", а они такие "ну ок, когда загрузится, скажи". Что-нибудь в таком духе. Также эта штука может помогать при отладке, чтобы понимать, что реально произошло на странице, а что еще нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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