return promise 与 return await promise 有何区别
更多描述 如
async function p1() {
return 3;
}
async function p2() {
return Promise.resolve(3);
}
async function p3() {
return await Promise.resolve(3);
}
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 724
Author 回答者: liweinanone
return promise:
返回结果为 Promise {fulfilled或者 rejected}
return await promise:
返回结果为 Promise {pending}, 因为 async 函数总是返回一个 promise (resolved promise?
希望可以得到山月的反馈
Author 回答者: shfshanyue
async function p1() {
return 3;
}
async function p2() {
return Promise.resolve(3);
}
async function p3() {
return await Promise.resolve(3);
}
// Output: p1、p3、p2
p3().then((o) => console.log(o, "p3"));
p2().then((o) => console.log(o, "p2"));
p1().then((o) => console.log(o, "p1"));
@liweinanone 最终返回得到的结果是相同的,但是有些顺序的变化,可看此例
Author 回答者: PstereoJW
主要在await会等待Promise的完结状态,如果Promise为reject,会在当前trycatch中被捕获,否则会将reject传递到外层。 https://stackoverflow.com/questions/38708550/difference-between-return-await-promise-and-return-promise
Author 回答者: xylon001
上述例子为什么先调用p2 结果还是没有改变?
p2().then(o => console.log(o, 'p2'))
p3().then(o => console.log(o, 'p3'))
p1().then(o => console.log(o, 'p1'))