uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

小程序的script setup不支持顶层await语法

Open Michael-py001 opened this issue 3 years ago • 7 comments

问题描述 小程序的script setup不支持顶层await语法

复现步骤

<script setup>
  let res = await http()
<script>

上面的语法编译到小程序,会出现以下报错。 因为现在不支持Suspense组件的原因导致报错吗,能不能兼容一下小程序? 现在的选择只有1. 使用then 但是这样不优雅 2. 使用script()选项式语法 但是这样就失去了vue3的script setup的易用性,中看不中用 image

还有官方的文档该更新了,现在不是全端支持Vite编译了吗,文档上还没更新 image

预期结果 可以运行正常

实际结果 报错

系统信息: 系统信息: 微信小程序 HBuilder X 3.5.0 alpha

Michael-py001 avatar Jul 02 '22 01:07 Michael-py001

应该是还不支持顶层await吧

shier112 avatar Jul 02 '22 05:07 shier112

@shier112 是的,就是不支持顶层await

Michael-py001 avatar Jul 02 '22 07:07 Michael-py001

在外部写函数,引入,执行且返回这个函数。在外部函数中用 async await

sishen654 avatar Jul 04 '22 02:07 sishen654

@WorldToCode 我试了一下,在外部函数使用 async await是可以,但是你在引用的页面直接执行这个外部函数,是同步执行的,得到的结果是一个promise,还没拿到最终的结果,必须要使用异步才行

Michael-py001 avatar Jul 04 '22 02:07 Michael-py001

@WorldToCode 我试了一下,在外部函数使用 async await是可以,但是你在引用的页面直接执行这个外部函数,是同步执行的,得到的结果是一个promise,还没拿到最终的结果,必须要使用异步才行

好像也是,async默认返回一个promise对象,那还是等官方实现了

sishen654 avatar Jul 04 '22 03:07 sishen654

小程序端目前不支持Suspense,所以不支持顶层await

fxy060608 avatar Jul 04 '22 03:07 fxy060608

setup 我怎么用不了呢?难道是hbuilder版本问题?我也是用的VUE3啊。

carveybunt avatar Jul 06 '22 08:07 carveybunt