Проверяет понимание асинхронной загрузки данных через Promise после первичного рендера страницы, что важно для оптимизации UX и времени до первого контента.
Идея в том, чтобы не блокировать отрисовку страницы ожиданием данных с сервера. Браузер сначала парсит HTML и CSS, показывает статический каркас интерфейса, а уже потом JavaScript инициирует запрос к API. Запрос возвращает Promise, который разрешается, когда сервер присылает ответ.
fetch, который возвращает Promise..then() или await обрабатываем результат и обновляем DOM.document.addEventListener('DOMContentLoaded', async () => {
const container = document.getElementById('content');
container.textContent = 'Загрузка...';
try {
const response = await fetch('/api/data');
if (!response.ok) throw new Error('Ошибка сети');
const data = await response.json();
container.innerHTML = data.items.map(i => `<li>${i.name}</li>`).join('');
} catch (err) {
container.textContent = 'Не удалось загрузить данные';
console.error(err);
}
});
Такой подход часто применяется в SPA и на страницах с динамическим контентом: сначала отдаём статику, потом догружаем данные. Это улучшает метрики First Contentful Paint и воспринимаемую производительность.
Итог: применяйте этот паттерн, когда важна быстрая первая отрисовка и данные не критичны для базовой структуры страницы.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию