问题
Say I have a function that returns a resolved promise like this:
let a = () => {return new Promise(res => res(1))}
and then I then-ify it like this:
a()
.then(val => {return new Promise(res => res(1))})
Here the then contains a handler that returns a promise resolved with 1, so the then block returns a promise resolved with 1 as well. Is that right?
Then say instead we have this:
a()
.then(val => {return 1})
The handler returns 1 instead of returning a promise resolved with 1.
What I Want To Know: Does the then block return a promise resolved with 1 in both of these scenarios, even though one handler returned a resolved promise and the other just returned a value? In other words, does a then block deal with handlers that return promises resolved with a value the same way they deal with handlers that return the value itself?
回答1:
All values returned from a then block are implicitly wrapped in a Promise.resolve, so returning Promise.resolve(1) is unnecessary.
来源:https://stackoverflow.com/questions/61511457/js-promises-if-a-handler-in-a-then-block-returns-a-value-vs-returning-a-resol