javascript - VueJS Vuex - 解决状态变化的 promise ?

标签 javascript vue.js promise vuejs2 vuex

是否可以创建一个 Promise,一旦全局 vuex 存储中的变量发生变化,它就会解析?

我有一个变量在状态存储中初始化为 null 并将通过异步调用填充。
应用程序的不同部分取决于该变量是 true 还是 false 并且应该在它仍然是 null 时等待。

有没有办法干净地等待这个变量的变化?

最佳答案

您可以 vm.$watch在表达式或函数上,然后是 wrap that with a promise .

function watch(vm, fn) {
  return new Promise(resolve => {
    const watcher = vm.$watch(fn, (newVal) => {
      resolve(newVal);
      watcher(); // cleanup;
    });
  });
}

这会让你做类似的事情:

let change = await watch(vm, () => state.foo); // will resolve when state.foo changes

异步函数中。

请注意,一般来说这不是一个很好的模式,在大多数情况下,使用 computed property 更可取且更简单。 (而不是 promise )。

关于javascript - VueJS Vuex - 解决状态变化的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680002/

相关文章:

javascript - 传递额外的参数来绑定(bind)?

javascript - 使用下拉选择数据Vue js

html - 删除 vuetify 数据表标题上的下拉箭头?

jquery - 如何处理不确定数量的 jQuery Promise?

javascript - 文本附加和循环效果

javascript - 如何将 Uint8Array 的对象转换为字符串并将字符串转换回同一对象?

Javascript Vanilla - 如何在 ajax 内容中的元素上附加事件监听器?

vue.js - 从 spa 文件夹提供静态 index.html

javascript - 如何处理 Node.js 模块中的异步回调?

javascript - Promise.all()中如何使用if表达式?