cyb*_*bat 3 node.js promise async-await ecmascript-next
我正在努力使用async/await并从Promise返回一个值.
function test () {
return new Promise((resolve, reject) => {
resolve('Hello')
})
}
async function c() {
await test()
}
Run Code Online (Sandbox Code Playgroud)
据我所知,我应该能够通过以下方式获得价值:
console.log(c())
Run Code Online (Sandbox Code Playgroud)
但显然我在这里错过了一点,因为这会回报一个承诺.不应该打印"你好"吗?在类似的说明中,我不清楚回调是否需要在将其包装在async/await之前转换为promise?
我在这里错过了一点,因为这会返回一个承诺.不应该
console.log(c())打印"你好"?
不,async功能总是返回承诺.他们并没有同步地神奇地运行异步代码 - 相反,他们将同步代码(虽然有点await关键字)变成异步运行代码.
你可以得到的结果值内异步函数:
async function c() {
const result = await test()
console.log(result);
return 'World';
}
c().then(console.log);
Run Code Online (Sandbox Code Playgroud)
我不清楚回调是否需要在将其包装到async/await之前转换为promise?
是的,你await只能承诺.请参阅如何将现有回调API转换为承诺?如何进行转换.
| 归档时间: |
|
| 查看次数: |
5301 次 |
| 最近记录: |