【发布时间】:2021-12-22 11:26:00
【问题描述】:
我使用 Vue 并且在 load.js 中有一个方法。
async function loadTask(x) {
return await x; // Some async code
}
export { loadTask };
在一个 Vue 组件中,我调用它,但 await 阻止 <template> 加载。如果没有await,下面的代码会运行。我错过了什么?
<script setup>
import { loadTask } from './methods/load.js';
const test = loadTask(3);
console.log(await test);
</script>
<template>
<div>Does not run</div>
</template>
【问题讨论】:
-
await在顶层无效,除非您的环境支持。不过,我认为<script>标记对于顶级等待并不重要。你在说这些话时没有收到错误吗? -
@VLAZ - 如果它是
<script type="module">但上面不是(除非在浏览器看到它之前对它做了什么,它上面的setup东西让我想知道,因为我不要做 Vue.js)。 -
@VLAZ 不,我没有收到任何错误。一件奇怪的事情,如果我在
</script>之前写console.log('whatever') 它会运行,但我会在<template></template>中停止输出。 -
正如@VLAZ 所说,您很可能在尝试在模块外部的顶层使用
await时遇到错误。也许错误被捆绑程序或您的环境掩盖了? -
可以在Vue中使用顶级await,但必须和Suspense一起使用:1.v3.vuejs.org/api/sfc-script-setup.html#top-level-await 2.stackoverflow.com/questions/69183835/…
标签: javascript vue.js import async-await export