Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: render, script, async, defer, парсинг, event loop

Как event loop влияет на парсинг HTML и как этого избежать?

Этот вопрос проверяет, как event loop и выполнение JavaScript влияют на процесс парсинга HTML. Знание об этом помогает разработчикам улучшать время загрузки страниц и минимизировать задержки.

Короткий ответ

Event loop может приостанавливать парсинг HTML, если JavaScript выполняется во время загрузки страницы. Когда браузер встречает тег <script>, он останавливает парсинг и выполняет скрипт, что может замедлить загрузку страницы. Чтобы избежать этого, разработчики могут использовать атрибуты async или defer, которые позволяют загружать и выполнять скрипты асинхронно, не блокируя парсинг.

Длинный ответ

Парсинг HTML — это процесс, в котором браузер читает HTML-код, строит DOM-дерево и готовит страницу для рендеринга. Этот процесс может быть затруднен, если в HTML встречаются теги <script>, которые требуют выполнения JavaScript.

Как работает Event Loop:
Event loop позволяет JavaScript выполнять асинхронные операции, добавляя их в очередь событий. Когда браузер начинает парсить HTML и встречает тег <script>, он останавливает парсинг и начинает выполнять код внутри тега. Это может привести к задержкам, особенно если скрипт выполняется долго.

<html>
	<head>    
		<script>    
			// Этот код блокирует парсинг            
			for (let i = 0; i < 1e9; i++) {} 
		</script>   
	</head>    
	<body>    
    		<p>Hello World</p>    
	</body> 
</html>

В этом примере браузер не сможет продолжить парсинг до завершения выполнения скрипта, что замедлит отображение содержимого страницы.

Использование async и defer:
Чтобы избежать блокировок во время парсинга, разработчики могут использовать атрибуты async и defer в теге <script>.

  • async: Скрипт загружается асинхронно и выполняется сразу после загрузки, что может нарушить порядок выполнения, если скрипты зависят друг от друга.

    <script src="script1.js" async></script> 
    <script src="script2.js" async></script>
  • defer: Скрипт загружается асинхронно, но выполняется только после завершения парсинга HTML. Это гарантирует, что порядок выполнения будет сохранен.

    <script src="script1.js" defer></script> 
    <script src="script2.js" defer></script>

Использование async и defer позволяет разработчикам:

  • Улучшить производительность загрузки страниц.

  • Избежать блокировок и задержек во время парсинга HTML.

  • Гарантировать правильный порядок выполнения скриптов при необходимости.

Таким образом, знание о влиянии event loop на парсинг HTML и способы его оптимизации помогает разработчикам создавать более быстрые и отзывчивые веб-приложения.

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#render

#script

#async

#defer

#парсинг

#event loop

Подпишись на React Developer в телеграм