【问题标题】:Computed property depending on two async computations in Vue.js计算属性取决于 Vue.js 中的两个异步计算
【发布时间】:2025-12-02 11:40:01
【问题描述】:

我有一个组件在创建时会向 RESTful 服务器发出两个请求。然后将响应适当地存储在 Vue Store 中。 这个组件有一个计算属性,它依赖于both响应。

但是,按照设计,存储中的任何相关更改都会触发属性的重新计算以及所有后续更新,例如在相关模板中。 如果只收到一个所需的响应并且不需要进行任何更新,我如何表明该属性实际上没有更改?

【问题讨论】:

  • 如果您可以发布任何代码将是有益的。如果我理解正确 - 您只想在两个响应都发生变化时重新计算计算结果?
  • 使用 Vuex。实际上,所有动作/突变/吸气剂的东西都会导致您的问题得到解决。信息:vuex.vuejs.org/en
  • 使用 Promise.all 等待两个 Promise 解决后再采取行动。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @Potray 我确实使用 Vuex,我将其称为 Vue Store。我必须澄清:我发出两个请求意味着我指示 Vuex 采取两个异步操作,这些操作在完成时分别且在不知情的情况下彼此(因此不能选择承诺),将触发 2 个突变,这将更新计算的重新计算财产两次。打算只进行一次重新计算。
  • 那么你必须使用promises、async或其他东西来执行以下流程:Request1 => Request 2 => mutation

标签: vue.js vuejs2


【解决方案1】:

这篇文章是很久以前的,但我遇到了同样的问题。我还没有尝试过,但我相信这是解决这个问题的方法:

https://vuex.vuejs.org/en/actions.html#composing-actions

尤其是async/await 示例的最后一部分。它清楚地说明了如何使用多个异步操作执行突变。

【讨论】: