@vue-composition / 如何在 setup() 中使用异步方法

Posted

技术标签:

【中文标题】@vue-composition / 如何在 setup() 中使用异步方法【英文标题】:@vue-composition / How can I use asynchronous methods in setup() 【发布时间】:2020-05-30 11:37:58 【问题描述】:
<script lang="ts">
import  createComponent  from "@vue/composition-api";

import  SplashPage  from "../../lib/vue-viewmodels";

export default createComponent(
  async setup(props, context) 
    await SplashPage.init(2000, context.root.$router, "plan", "login");
  
);
</script>

错误:“setup”必须返回“Object”或“Function”,得到“Promise”

【问题讨论】:

【参考方案1】:

setup 函数必须是同步的 can be async using Suspense.

如何避免使用异步设置(过时的答案)

onMounted 钩子可以与async 回调一起使用:

import  onMounted  from "@vue/composition-api";

// …
export default createComponent(
  setup(props, context) 
    onMounted(async () => 
      await SplashPage.init(2000, context.root.$router, "plan", "login");
    );
  
);

或者,总是可以调用异步函数而不等待它:

SplashPage.init(2000, context.root.$router, "plan", "login")
  .catch(console.log);

在这两种情况下,您都必须考虑到组件将在异步函数执行之前呈现。不显示依赖于它的内容的一种简单方法是在模板中使用v-if

【讨论】:

你说必须同步,this async setup呢? @Greendrake 你是对的。我看到现在有一​​种方法,Suspense。我会尝试这个新功能,然后我会回到这里更新我的答案。 vueschool.io/articles/vuejs-tutorials/… 不幸的是,该功能仅适用于 vue3 而不是 vue2 composition-api

以上是关于@vue-composition / 如何在 setup() 中使用异步方法的主要内容,如果未能解决你的问题,请参考以下文章

小米8se线刷了miui10,如何安装谷歌框架

SE如何通过ViewPoint进行Web发布

如何在iPhone SE和5S上设置AutoLayout?

如何关闭java platform se binary

如何看待荣耀60 SE这款产品?

如何围绕模型估计手动绘制 SE/CI