VueJS Vuex - Обещание, которое решает вопрос об изменении состояния? - PullRequest
0 голосов
/ 06 октября 2018

Можно ли создать Обещание, которое разрешается после изменения переменной в глобальном хранилище vuex?

У меня есть переменная, которая инициализируется как null в хранилище состояний и будет заполняться через асинхронныйcall.
Другая часть приложения зависит от этой переменной true или false и должна ждать, пока она еще null.

Есть ли способ чистого ожиданиядля изменения этой переменной?

1 Ответ

0 голосов
/ 06 октября 2018

Вы можете vm.$watch для выражения или функции, а затем обернуть это обещанием .

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.

Обратите внимание, что в целом это не потрясающий шаблон, и в большинстве случаев предпочтительнее и проще использовать вычисляемое свойство (а не обещание) за это.

...