Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: setTimeout, Promise, async, event loop, callback

Зачем оборачивать setTimeout в Promise при эмуляции задержки API — и что изменится, если убрать эту обёртку?

Вопрос проверяет понимание асинхронности в JavaScript и разницы между setTimeout и Promise при эмуляции задержки API.

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

Оборачивание setTimeout в Promise позволяет использовать async/await для управления асинхронным кодом. Без обёртки setTimeout работает как callback, что усложняет чтение и обработку ошибок. Promise даёт возможность использовать .then() и try/catch, делая код более линейным и предсказуемым.

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

Зачем оборачивать setTimeout в Promise?

При эмуляции задержки API часто используют setTimeout, но он сам по себе не возвращает Promise. Оборачивание в Promise позволяет использовать современные паттерны асинхронного программирования, такие как async/await и цепочки .then().

Пример без обёртки

function fetchData(callback) {
  setTimeout(() => {
    callback('data');
  }, 1000);
}

fetchData((data) => {
  console.log(data); // 'data'
});

Здесь код становится вложенным, сложно обрабатывать ошибки и комбинировать несколько асинхронных операций.

Пример с Promise

function fetchData() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('data');
    }, 1000);
  });
}

async function main() {
  const data = await fetchData();
  console.log(data); // 'data'
}

Теперь код выглядит как синхронный, легко читается и поддерживается. Можно использовать try/catch для обработки ошибок.

Что изменится, если убрать обёртку?

Без Promise вы теряете возможность использовать await. Придётся работать с колбэками, что приводит к callback hell при множественных запросах. Также сложнее комбинировать асинхронные операции (например, Promise.all).

Вывод: Оборачивание setTimeout в Promise — это стандартный паттерн для эмуляции асинхронных операций, который делает код чище, проще для отладки и масштабирования. Используйте его в тестах, прототипах и при работе с асинхронными API.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

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

#setTimeout

#Promise

#async

#event loop

#callback

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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