Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: lazy loading, skeleton screen, async rendering, graceful degradation, loading state

Если часть данных на странице грузится дольше из-за зависимости от внешнего сервиса — показывать страницу частично или ждать полных данных?

Вопрос проверяет понимание стратегий загрузки данных и UX-подходов при работе с медленными внешними сервисами.

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

Лучше показывать страницу частично, используя скелетоны или индикаторы загрузки для отдельных блоков. Это улучшает восприятие скорости и позволяет пользователю взаимодействовать с уже загруженными частями. Полное ожидание всех данных ухудшает UX и может привести к потере пользователей.

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

Проблема

Когда часть данных на странице зависит от медленного внешнего сервиса, возникает дилемма: ждать полной загрузки или показывать частичный контент. Ожидание всех данных блокирует рендеринг и ухудшает пользовательский опыт, особенно на мобильных устройствах или при нестабильном соединении.

Решение: частичная загрузка

Современный подход — показывать страницу сразу с доступными данными, а для медленных блоков отображать скелетоны (серые прямоугольники, имитирующие структуру контента) или спиннеры. Это называется асинхронным рендерингом с постепенным улучшением.

Пример реализации на React

import React, { useState, useEffect } from 'react';

function UserProfile({ userId }) {
  const [user, setUser] = useState(null);
  const [orders, setOrders] = useState(null);

  useEffect(() => {
    fetch(`/api/users/${userId}`)
      .then(res => res.json())
      .then(setUser);
    fetch(`/api/orders/${userId}`)
      .then(res => res.json())
      .then(setOrders);
  }, [userId]);

  return (
    <div>
      {user ? <h1>{user.name}</h1> : <div className="skeleton" />}
      {orders ? <OrderList items={orders} /> : <div className="skeleton" />}
    </div>
  );
}

Когда применять

  • Если данные независимы — показывайте их сразу.
  • Если данные критичны для навигации (например, меню) — можно показать скелетон, но не блокировать всю страницу.
  • Для SEO и SSR может потребоваться ожидание, но с использованием потоковой передачи (streaming).

Вывод: частичная загрузка с визуальной обратной связью (скелетоны, спиннеры) предпочтительнее полного ожидания, так как улучшает восприятие производительности и удерживает пользователя на странице.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • React

    React

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

#lazy loading

#skeleton screen

#async rendering

#graceful degradation

#loading state

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию