Проверяет понимание асинхронности JavaScript и влияния сетевых запросов на основной поток и рендеринг страницы.
Когда пользователь кликает по кнопке, браузер запускает обработчик события. Если внутри обработчика вызывается fetch или XMLHttpRequest, JavaScript-движок не ждёт ответа синхронно. Вместо этого он регистрирует запрос и продолжает выполнять следующий код. Сетевой запрос обрабатывается браузером в отдельном потоке (или через системные вызовы), поэтому основной поток JavaScript остаётся свободным.
Основной поток в браузере отвечает за выполнение JavaScript, обработку событий и отрисовку страницы. Если бы запрос был синхронным, поток заблокировался бы на время ожидания ответа, и страница перестала бы реагировать на действия пользователя. Асинхронная модель позволяет избежать этого: запрос уходит, а поток продолжает обрабатывать другие события и обновлять интерфейс. Когда ответ приходит, колбэк помещается в очередь микрозадач или макрозадач, и выполняется после завершения текущего синхронного кода. Перерисовка страницы происходит между задачами, поэтому пользователь видит плавное обновление.
button.addEventListener('click', () => {
console.log('Начало обработки клика');
fetch('/api/data')
.then(response => response.json())
.then(data => {
console.log('Данные получены', data);
// Обновляем DOM
});
console.log('Конец обработки клика');
});В этом примере сначала выводится 'Начало обработки клика', затем вызывается fetch, и сразу выводится 'Конец обработки клика'. Ответ придёт позже, когда сетевой запрос завершится, и только тогда выполнится код внутри then. Основной поток не блокируется, и страница может перерисовываться во время ожидания.
Асинхронные запросы — стандартный способ взаимодействия с бэкендом в веб-приложениях. Они позволяют сохранять отзывчивость интерфейса и не блокировать рендеринг. Используйте их всегда, когда нужно получить данные с сервера, чтобы обеспечить плавный пользовательский опыт.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию