Вы можете 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
.
Обратите внимание, что в целом это не потрясающий шаблон, и в большинстве случаев предпочтительнее и проще использовать вычисляемое свойство (а не обещание) за это.