首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NuxtJS:将异步/等待与mounted()和$nextTick()一起使用?

NuxtJS:将异步/等待与mounted()和$nextTick()一起使用?
EN

Stack Overflow用户
提问于 2020-10-15 02:27:56
回答 2查看 1.3K关注 0票数 0

我如何在这里使用异步/等待?我的以下代码不起作用,因为根据我的控制台消息,awaitasync函数之外。

代码语言:javascript
复制
  async mounted() {
    this.$nextTick(() => {
      this.$nuxt.$loading.start()
      this.anno = await window.Annotorious.init({
        image: this.photo.id
      })
      await this.setAuthorInfo()
      this.anno.setVisible(false)
      setTimeout(() => this.$nuxt.$loading.finish(), 500)
    })
EN

回答 2

Stack Overflow用户

发布于 2020-10-16 05:46:03

()之前添加async

代码语言:javascript
复制
async mounted() {
  this.$nextTick(async () => {
    this.$nuxt.$loading.start()
    this.anno = await window.Annotorious.init({
      image: this.photo.id
    })
    await this.setAuthorInfo()
    this.anno.setVisible(false)
    setTimeout(() => this.$nuxt.$loading.finish(), 500)
  })
}
票数 1
EN

Stack Overflow用户

发布于 2020-10-16 01:34:19

以下是async mounted的示例

代码语言:javascript
复制
<template>
    <div v-if="testAsync">{{testAsync}}</div>
</template>

<script>
  export default {
    data(){
      return {
        testAsync: "",
      }
    },

    async mounted() {
      let start = + new Date();
      this.testAsync= await this.testPromise();
      let finish = + new Date();
      console.log("here we wait ", finish - start, " ms for you");
    },

    methods:{
      async testPromise() {
        return new Promise(resolve => {
          this.$nextTick(() => {
            this.$nuxt.$loading.start()
            setTimeout(() => { this.$nuxt.$loading.finish(); resolve('Hello');}, 5000);
          })
        });
      }
    }
</script>

在解析promise之前放置v-if以确保vue不会呈现模板

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64359425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档