Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2017, 09:53
Аспирант
Отправить личное сообщение для fedushok Посмотреть профиль Найти все сообщения от fedushok
 
Регистрация: 18.09.2017
Сообщений: 45

Определение приоритета при выполнении обработчиков DOMContentLoaded
Приветствую!

Есть несколько элементов разметки (скажем элементы АБВ), ссылки на которые используются в нескольких модулях JS. Сейчас каждый раз для использования одного из этих элементов разметки в каком-либо модуле сначала выполняется поиск этого элемента и получение ссылки на него.
Полагаю более целесообразно организовать отдельный модуль JS (скажем модуль Б) для элементов АБВ, из которого брать ссылки на эти элементы. Ссылки на соответствующие элементы разметки получать при выполнении события DOMContentLoaded.
Вопрос в том, что есть модули JS, которые также участвуют в обработке события DOMContentLoaded и при этом используют ссылки на элементы АБВ. Может получится так, что обработчик события DOMContentLoaded модуля Б еще не будет выполнен и ссылки на АБВ еще не получены, но уже востребованы в прочих модулях. Как определить приоритет выполнения обработки события DOMContentLoaded в модуле Б по сравнению с прочими модулями?
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2017, 11:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Грузить его первым без асинхрона, кек.

Какой обработчик первым зарегистрирован тот первым и отработает.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2017, 13:53
Аспирант
Отправить личное сообщение для fedushok Посмотреть профиль Найти все сообщения от fedushok
 
Регистрация: 18.09.2017
Сообщений: 45

То есть ставить модуль Б первым js файлом на странице.
А более академичный вариант есть?
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2017, 21:47
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Академично поставить его первым при сборке.)

Нет, серьёзно: модули на то и модули, что автономны. Если им надо ждать какой-то один - значит придётся ждать. Приоритет обработчиков событий определяется очерёдностью их установки и более никак.(и то спасибо развитию и стандартизации, когда-то это вообще рандом был)

Если очень хочется сделать пафосно, то можно в главном модуле налепить ленивых геттеров на нужные элементы, чтоб элемент получали с первым обращением. Примерно так:
...
get topElement(){
  delete this.topElement;
  return this.topElement = this.container.querySelector('.top-element')
},
...
__________________
29375, 35

Последний раз редактировалось Aetae, 02.12.2017 в 21:55.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод определенного блока при выполнении условий sergiocharm Общие вопросы Javascript 24 17.04.2012 19:22
определение времени при событии mouseOver greenred Events/DOM/Window 1 13.02.2012 23:28
Задержка при выполнении скрипта leny Общие вопросы Javascript 9 07.09.2011 09:43
FF. Ошибка при выполнении скрипта. nordek Firefox/Mozilla 9 18.07.2011 23:58
Ускорение при выполнении setInterval.. Sweet Элементы интерфейса 6 17.03.2010 10:24