什么是JavaScript顶层Await_它如何在模块中使用

admin 百科 13
顶层 await 是 ES2022 正式标准,允许在 ESM 模块顶层直接使用 await,使模块变为异步模块并按序等待 Promise 完成,仅适用于模块环境,不可用于脚本或 CommonJS。

什么是JavaScript顶层Await_它如何在模块中使用-第1张图片-佛山资讯网

顶层 await 是指在 ECMAScript 模块(ESM)的最外层作用域(即模块顶层)直接使用 await 表达式,而无需将其包裹在 async 函数中。它自 ES2022(第13版)起成为正式标准,让模块可以“等待”异步操作完成后再完成自身求值,从而简化依赖异步初始化的场景。

顶层 await 的核心特性

它只在模块顶层有效,且会使该模块变成一个“异步模块”。一旦模块中出现顶层 await,整个模块的执行会被暂停,直到所有顶层 await 的 Promise 都 fulfilled。其他导入该模块的代码也会等待其完全就绪后才继续执行。

  • 不能在脚本(<script></script> 非模块)或 CommonJS 中使用
  • 模块加载器会将含顶层 await 的模块视为 async module,其 import 返回的是 Promise
  • 多个顶层 await 会按顺序执行(串行),但可配合 Promise.all() 并行发起

如何在模块中使用顶层 await

只需把 await 写在模块最外层即可,常用于初始化配置、获取远程数据、等待资源加载等。

例如:

立即学习“Java免费学习笔记(深入)”;

// config.mjs
const response = await fetch('/api/config');
const config = await response.json();
export { config };

登录后复制

另一个常见用法是并行加载多个资源:

标签: javascript java js node.js json node 浏览器 ai 异步加载 作用域

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~