> Может ли Promise одновременно зарезолвиться и зареджектиться в JavaScript? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: VK

Стек: JavaScript

> Пример ответа

Нет, Promise не может одновременно зарезолвиться и зареджектиться. Promise может находиться только в одном из трёх состояний: pending (ожидание), fulfilled (выполнен успешно) или rejected (отклонён). После того как Promise перешёл в состояние fulfilled или rejected, он становится "замороженным" - его состояние не может измениться.

Даже если в коде вызвать и resolve, и reject, сработает только первый вызов. Например:

JAVASCRIPT
const promise = new Promise((resolve, reject) => {
resolve('Успех');
reject('Ошибка'); // этот вызов будет проигнорирован
});
promise.then(console.log, console.error); // Выведет: "Успех"

Аналогично, если первым вызвать reject, то resolve будет проигнорирован. Это гарантирует детерминированное поведение и предотвращает неоднозначные состояния.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью