在 async/await 中,假设异步函数将返回 Promise。然而,当在顶层使用异步函数而没有显式的 Promise 处理时,就会出现复杂性。
这里的问题是 main 函数返回一个 Promise ,使 console.log('outside: ' text) 语句陷入困境,没有立即输出的值。 async/await 语法导致“inside”消息在“outside”消息之后被记录,因为它会等待 main() 返回的 Promise 解决后再继续。
要在没有显式 then() 处理的情况下使用返回值,您有三个选项:
1。模块中的顶级 Await
(在支持 ES2022 的现代环境中可用)
const text = await main(); console.log(text);
2.永不拒绝的顶级异步函数
(async () => { try { const text = await main(); console.log(text); } catch (e) { // Handle Promise rejection or async exceptions here } })();
3.然后赶上
main() .then(text => { console.log(text); }) .catch(err => { // Handle Promise rejection or async exceptions here });
以上是为什么'console.log”出现在顶级'async”代码中的异步函数结果之前?的详细内容。更多信息请关注PHP中文网其他相关文章!