顶层等待在 ECMAScript 中不起作用

Top level await not working in ECMAScript

我很困惑,因为我读到 ESM 支持顶级等待,但是当我在 html 文件中尝试它时它不起作用?

我发现是说: “顶级等待仅适用于 ESM 模块”

ESM 是否支持顶级 await 以及如何使用它。

document.getElementById('foo').innerHTML = 'hello1';
await pause(2000); // is this possible if so how
document.getElementById('foo').innerHTML = 'hello2';

是的,它在 ESM - ES6 模块中受支持。它在普通脚本标签中受支持。

<script>
await Promise.resolve();
</script>

您需要指定该脚本是一个模块才能运行。

<script type="module">
await Promise.resolve();
console.log('finished successfully');
</script>

(还要确保您 运行 这是在受支持的环境中 - 较旧的环境可能不支持顶级等待)