我在 async/await 和从 Promise 返回值方面遇到了一些困难。
function test () {
return new Promise((resolve, reject) => {
resolve('Hello')
})
}
async function c() {
await test()
}
据我了解,我应该能够通过以下操作获得价值:
console.log(c())
但显然我在这里遗漏了一点,因为这返回了一个承诺。它不应该打印“hello”吗?在类似的注释中,我不清楚回调是否需要在将其包装在 async/await 中之前转换为承诺?
我在这里遗漏了一点,因为这返回了一个承诺。不应该console.log(c())
打印“你好”?
No, async
函数总是返回承诺。它们并没有神奇地同步运行异步代码 - 相反,它们将看起来同步的代码(尽管点缀着await
关键字)转换为异步运行。
就可以得到结果值inside异步函数:
async function c() {
const result = await test()
console.log(result);
return 'World';
}
c().then(console.log);
我不清楚回调是否需要在将其包装在 async/await 中之前转换为承诺?
是的你可以await
只是承诺。看如何将现有回调 API 转换为 Promise? https://stackoverflow.com/q/22519784/1048572了解如何进行转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)