以前 await 只能写在 async 函数里面;现在在模块的最顶层(最外面)也能直接用 await。
| 以前 · 要包一层 async 函数 | 现在 · 模块顶层直接用 |
|---|---|
function getData() {
return new Promise(resolve => {
setTimeout(() => resolve("数据来了"), 500);
});
}
// 以前:非得套个 async 函数
async function load() {
let data = await getData();
console.log(data);
}
load();
|
function getData() {
return new Promise(resolve => {
setTimeout(() => resolve("数据来了"), 500);
});
}
// 现在:模块最外层直接等
let data = await getData();
console.log(data);
|
以前非得套个 async 函数再调用;现在脚本(模块)最外层直接 await,少一层壳。
// 要这么引用才是"模块",才能用顶层 await <script type="module" src="main.js"></script>
普通 script 里不能用,得是 type="module" 的脚本。用 Vite / Webpack 等项目打包时很常见。