Задать вопрос
alex_keysi
@alex_keysi
Помог с решением? Отметь “правильный ответ”

Одинаковы ли два кода?

Есть вот такой код
promise.then(value=>value).then(value=> ...)
и вот так
promise.then(value=>Promise.resolve(value)).then(value=> ...)

Правильно ли я понимаю что если в обработчике для промиса мы возвращаем просто значение вот так (value=> value), то возвращается промис у который автоматически в состоянии resolve? что и делает функция Promise.resolve() - возвращает уже разрешенный промис.
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Если promise разрешается с не-промисным значением value, то promise.then(value => value) и promise.then(value => Promise.resolve(value)) эквивалентны promise в приведённой выше цепочке.
Статусы этих промисов одинаковы.

Если promise разрешается с промисным значением value, то promise.then(value => value) и promise.then(value => Promise.resolve(value)) эквивалентны: они вернут промис, который разрешается со значением, с которым разрешается value.

P.S. честно говоря, я не знаю, как сделать промис, который бы разрешался со значением, который сам по себе является промисом. Беглое лурканье и SO подсказывают, что это невозможно, разве только будем оборачивать возвращаемый во время разрешения промис в объект (ссыль)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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