← Назад к вопросам

Что нужно сделать чтобы произошел resolve у Promise?

1.0 Junior🔥 161 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что нужно сделать чтобы произошел resolve у Promise?

Promise в JavaScript — это объект, который представляет результат асинхронной операции. Чтобы произошел resolve (успешное разрешение), нужно вызвать специальную функцию resolve(), которая передается в конструктор Promise как аргумент.

Базовый механизм

Когда вы создаете Promise, вы передаете функцию (executor), которая получает два параметра: resolve и reject:

const promise = new Promise((resolve, reject) => {
  // Здесь можно выполнить асинхронную операцию
});

Чтобы Promise перешел в состояние resolved, нужно вызвать функцию resolve() с результатом:

const promise = new Promise((resolve, reject) => {
  resolve("Успех!");
});

promise.then((result) => {
  console.log(result); // "Успех!"
});

Примеры вызова resolve

1. Простой случай

const promise = new Promise((resolve) => {
  resolve(42);
});

promise.then((value) => {
  console.log(value); // 42
});

2. С задержкой (setTimeout)

const promise = new Promise((resolve) => {
  setTimeout(() => {
    resolve("Готово после 2 секунд");
  }, 2000);
});

promise.then((result) => {
  console.log(result);
});

3. С реальной асинхронной операцией (fetch)

const fetchData = () => {
  return new Promise((resolve, reject) => {
    fetch("https://api.example.com/data")
      .then((response) => response.json())
      .then((data) => resolve(data))
      .catch((error) => reject(error));
  });
};

fetchData().then((data) => {
  console.log("Данные загружены:", data);
});

Ключевые моменты

Состояния Promise:

  • Pending (ожидание) — начальное состояние
  • Resolved (выполнено) — когда вызвана функция resolve()
  • Rejected (отклонено) — когда вызвана функция reject()

Когда Promise переходит в состояние resolved:

  1. Все обработчики, зарегистрированные через .then(), будут вызваны
  2. Значение, переданное в resolve(), будет передано этим обработчикам
  3. Promise больше не может измениться на другое значение

Важно: Функция resolve() должна быть вызвана только один раз. Дальнейшие вызовы resolve() или reject() будут проигнорированы:

const promise = new Promise((resolve, reject) => {
  resolve("Первое значение");
  resolve("Второе значение"); // Будет проигнорировано
  reject(new Error("Ошибка")); // Тоже будет проигнорировано
});

promise.then((value) => {
  console.log(value); // "Первое значение"
});

Async/await синтаксис

В современном коде часто используется async/await вместо конструктора Promise:

async function getData() {
  // Функция автоматически возвращает Promise
  return "Данные получены";
  // resolve происходит автоматически с возвращаемым значением
}

getData().then((data) => {
  console.log(data); // "Данные получены"
});

Резюме: для resolve Promise нужно вызвать функцию resolve(), передав ей значение результата. Это переводит Promise из состояния "ожидание" в состояние "успешное выполнение", и все обработчики .then() получат это значение.