@vGrabko99
html, css, js, php, golang, mysql

Почему не работает вложеность imports?

Код на GitHub
В init импортирую supports_html

Если в supports_html удалить третью строку (там импорт третьего уровня) то всё работает как надо (срабатывают алерты с true/false). Но если оставить то в терминале мы увидим что отработал espionage и ошибки с пакета supports_html
4319b530b8444fa99db064f4cb5fd0e8.png

Я предполагаю что init.js выполняется не ожидая supports_html5.js и из-за этого вылетают ошибки. Но как это исправить ума не приложу
Зарание спасибо за помощь.

Накидал примерную схему работы. (ожидание и реальность ;D )
d5272101f8c64f2e9432e18c4f0ba907.png
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
Denormalization
@Denormalization
Проблема в следующем:
- Шаг 1: вызывается imports в init.js
- Шаг 2: вызывается imports в support_html5
- Шаг 3: вызывается imports в espionage

Проблема в том, что выполнение onSuccess привязанно к onload событию, которое происходит независимо от того загружены ли все зависимости или нет.
Таким образом при загрузке support_html, функция onSuccess из init.js выполнится в любом случае, а вот функция onSuccess из support_html не выполнится, так как у него есть зависимости.
И тогда получается случай, когда support_html загружен, но его тело не выполненно, и соответсвенно объекта support_html не существует, так как до сих пор подгружаются зависимости support_html5

Лечить это нужно другой системой вызова onSuccess/onError функций.

PS
Можно перестать велосипедить, и использовать requirejs(как я посоветовал ранее) для загрузки зависимостей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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