Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: Promise, resolve, reject, async, JavaScript

Как работают resolve и reject внутри Promise?

Проверяет понимание механизма создания и изменения состояния Promise через функции resolve и reject.

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

resolve и reject — это функции, которые передаются в executor (исполнитель) Promise. Вызов resolve переводит Promise в состояние fulfilled (успешно завершён) с переданным значением. Вызов reject переводит Promise в состояние rejected (отклонён) с ошибкой. Только первый вызов resolve или reject имеет эффект, последующие игнорируются.

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

Promise в JavaScript — это объект, представляющий результат асинхронной операции. Он может находиться в одном из трёх состояний: ожидание (pending), выполнено (fulfilled) или отклонено (rejected). Функции resolve и reject — это два аргумента, которые передаются в функцию-исполнитель (executor) при создании нового Promise. Они являются единственным способом изменить состояние Promise с pending на fulfilled или rejected.

Как это работает

Когда вы создаёте Promise, вы передаёте функцию с двумя параметрами: resolve и reject. Вызов resolve(value) переводит Promise в состояние fulfilled, и значение value становится результатом, который получат обработчики .then(). Вызов reject(error) переводит Promise в состояние rejected, и ошибка error передаётся в .catch() или второй аргумент .then().

Важно: Promise может быть изменён только один раз. Если сначала вызван resolve, то последующие вызовы resolve или reject игнорируются. Аналогично, если сначала вызван reject, то остальные вызовы не имеют эффекта. Это гарантирует, что асинхронная операция завершится ровно один раз.

Пример кода

const promise = new Promise((resolve, reject) => {
  // Асинхронная операция, например, запрос к серверу
  setTimeout(() => {
    const success = true;
    if (success) {
      resolve('Данные получены');
    } else {
      reject(new Error('Ошибка запроса'));
    }
  }, 1000);
});

promise
  .then(result => console.log(result)) // 'Данные получены'
  .catch(error => console.error(error));

В этом примере через 1 секунду вызывается resolve или reject в зависимости от условия. Promise переходит в соответствующее состояние, и вызывается нужный обработчик.

Где применяется

Механизм resolve и reject используется везде, где нужно работать с асинхронными операциями: запросы к API, чтение файлов, таймеры, работа с базами данных. Это основа для async/await, которая делает асинхронный код более читаемым.

Вывод: понимание resolve и reject необходимо для создания собственных Promise и управления асинхронными потоками. Это ключевой элемент современного JavaScript, который помогает избежать callback hell и делает код более предсказуемым.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#Promise

#resolve

#reject

#async

#JavaScript

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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