在异步编程中,async/await 功能允许您在同步和异步任务之间无缝切换。然而,在顶层执行异步代码时,必须考虑一些因素。
当你定义一个异步函数时,它会返回一个 Promise。当您在顶层调用此函数时,它会立即返回 Promise,而不是解析的值。这就是为什么你的控制台在执行异步任务之前输出 Promise 对象。
要解决这个问题,你有几个选项:
1。顶级等待(ES2022提案)
在现代环境中,您可以在模块中使用顶级等待。这允许您直接在模块范围内等待 Promise。
const text = await main(); console.log(text); // Logs the resolved value
2.具有未处理拒绝的顶级异步函数
您可以定义一个从不拒绝的顶级异步函数。这可以防止未处理的拒绝错误,但不会显式处理错误。
(async () => { try { const text = await main(); console.log(text); // Logs the resolved value } catch (e) { // Error handling (optional) } })();
3. then() 和 catch()
如果以上选项都不合适,可以使用 Promise 的 then() 和 catch() 方法来处理结果。
main() .then((text) => { console.log(text); // Logs the resolved value }) .catch((err) => { // Error handling });
注意:在所有情况下,正确处理拒绝以防止出现未处理的拒绝错误非常重要。
以上是如何在 JavaScript 顶层正确执行异步代码?的详细内容。更多信息请关注PHP中文网其他相关文章!