代码之家  ›  专栏  ›  技术社区  ›  TommyF

VueJS Vuex-在状态更改时解决的承诺?

  •  1
  • TommyF  · 技术社区  · 6 年前

    是否可以创建一个承诺,在全局vuex存储区中的变量发生更改时进行解析?

    null 并将通过异步调用填充。
    true false 应该在它静止的时候等待 无效的 .

    有没有一种方法可以干净地等待这个变量的变化?

    1 回复  |  直到 6 年前
        1
  •  8
  •   Benjamin Gruenbaum    6 年前

    你可以 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
    

    内部 async function

    注意:一般来说,这不是一个很好的模式,在大多数情况下,使用 computed property

        2
  •  1
  •   Kflexior    4 年前

    subscribe

    new Promise(resolve => {
          let unsubscribeFn = this.$store.subscribe(mutation => {
            if (mutation.type === "MY_MUTATION") {
              unsubscribeFn();
              resolve();
            }
          });
        });