首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件中的异步计算- VueJS?

组件中的异步计算- VueJS?
EN

Stack Overflow用户
提问于 2018-02-06 18:54:23
回答 2查看 68K关注 0票数 38

我正在寻找组件中异步计算方法的解决方案:

目前,我的组件是:

代码语言:javascript
复制
<div class="msg_content">
   {{messages}}
</div>

<script>
export default {
  computed: {
    messages: {
      get () {
        return api.get(`/users/${this.value.username}/message/`, {'headers': { 'Authorization': 'JWT ...' }})
        .then(response => response.data)
      }
    }
  },
}
</script>

结果:{}

如何在Promise模式下重写?因为我认为我们可以通过写入Promise模式来进行异步计算。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-06 20:25:35

计算属性基本上是缓存它们的结果的函数,这样就不必在每次需要它们时都进行计算。他们根据使用的反应值自动更新

您的计算器不使用任何反应项,因此它作为计算器没有意义。它现在返回一个Promise (假设then的通常行为)。

还不完全清楚您想要实现什么,但我最好的猜测是,您应该创建一个数据项来保存response.data,并在created hook中进行api.get调用。就像这样

代码语言:javascript
复制
export default {
  data() {
      return {
        //...
        messages: []
      };
  },
  created() {
    api.get(`/users/${this.value.username}/message/`, {
        'headers': {
          'Authorization': 'JWT ...'
        }
      })
      .then(response => this.messages = response.data);
  }
}
票数 43
EN

Stack Overflow用户

发布于 2018-02-06 20:22:40

通过将asyncawait与axios返回的promise结合使用,es7使这项工作变得非常简单。您将需要vue-async-computed包。

代码语言:javascript
复制
export default {
   asyncComputed: {
       async myResolvedValue() {
          return await api.get(`/users/${this.value.username}/message/`, {'headers': { 'Authorization': 'JWT ...' }})
              .then(response => response.data)
       }
    }
}
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48641295

复制
相关文章

相似问题

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