JS Обещания: если обработчик в блоке `then` возвращает значение, а не возвращение разрешенного обещания, то обрабатывает ли блок` then` его так же? - PullRequest
0 голосов
/ 29 апреля 2020

Скажем, у меня есть функция, которая возвращает разрешенное обещание, подобное этому:

let a = () => {return new Promise(res => res(1))}

, а затем я then-ify это так:

a()
.then(val => {return new Promise(res => res(1))})

Здесь then содержит обработчик, который возвращает обещание, разрешенное с помощью 1, поэтому блок then также возвращает обещание, разрешенное с помощью 1. Это правильно?

Затем скажите, что вместо этого у нас есть:

a()
.then(val => {return 1})

Обработчик возвращает 1 вместо возврата обещания, разрешенного с помощью 1.

Что я хочу знать: Возвращает ли блок then обещание, разрешенное с помощью 1 в обоих этих сценариях ios, даже если один обработчик возвратил разрешенное обещание, а другой только что вернул значение? Другими словами, обрабатывает ли блок then обработчики, которые возвращают обещания, разрешенные со значением, так же, как они работают с обработчиками, которые возвращают само значение?

1 Ответ

2 голосов
/ 29 апреля 2020

Все значения, возвращаемые из блока then, неявно заключены в Promise.resolve, поэтому возвращать Promise.resolve(1) не нужно.

...