顶层异步执行:了解 async/await 的用法
尽管存在 async/await 促进异步任务同步执行的误解,尝试在顶层使用它时需要考虑一些细微差别。
主要提供的示例未按预期运行的原因是因为异步函数总是返回 Promise。当执行 main() 时,它返回一个承诺,而不是异步函数内的结果。这会导致一系列事件,其中函数外部的控制台输出在内部消息之前打印,让您想知道为什么内部任务似乎是异步执行的。
顶级异步/等待的选项:
要解决这个问题,您可以采用以下几种方法:
1.模块中的顶级 Await:
此功能由 ES2022 标准和现代浏览器支持,允许您直接在模块中使用 wait。当使用顶级等待时,模块的加载将暂停,直到它等待的承诺得到解决。如果 Promise 被拒绝,则模块加载失败。
2.从不拒绝的顶级异步函数:
另一个选择是定义一个从不拒绝的顶级异步函数(除非您想处理“未处理的拒绝”错误)。该函数可以包装对 main() 的调用并处理内部可能发生的任何错误。
3. then 和 catch:
您可以在 main() 返回的 Promise 上使用 then 和 catch 方法,分别处理其结果和潜在错误。这些方法允许您注册将在 Promise 解决时执行的回调,确保可以根据需要记录或处理 main() 的值。
结论:
在顶层使用 async/await 需要仔细考虑和理解预期的行为。通过利用上述技术,您可以有效地使用 async/await 来实现异步执行,同时确保正确处理错误并从异步任务中检索结果。
以上是为什么顶级 `async/await` 的行为不符合预期?的详细内容。更多信息请关注PHP中文网其他相关文章!