Задать вопрос
@tostershmoster

Почему у промиса state: «fulfilled» если выполняется метод reject?

Выполняю в консоли
Promise.reject('api error')
  .catch(null)
  .then(() => console.log('1'))
  .catch((err) => console.log(err))
  .then(() => console.log('2'))


Получаю вывод
api error
2
Promise { <state>: "fulfilled", <value>: undefined }


Почему не
Promise { <state>: "rejected", <reason>: 'api error' }


upd:
И даже так
Promise.reject('api error').catch((err) => console.log(err))


получаю
api error
Promise {<fulfilled>: undefined}
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
catch(onRejected)
Returns a new Promise. This new promise is always pending when returned, regardless of the current promise's status. It's eventually rejected if onRejected throws an error or returns a Promise which is itself rejected; otherwise, it's eventually fulfilled.

.catch(null) не работает, поскольку не указана функция onRejected.
Второй .catch возвращает Promise.fulfilled, согласно спецификации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы