programing

VueJS Vuex - 상태 변경 시 해결 약속?

procenter 2022. 8. 10. 21:52
반응형

VueJS Vuex - 상태 변경 시 해결 약속?

글로벌 vuex 스토어의 변수가 변경되면 해결되는 Promise를 만들 수 있습니까?

다음과 같이 초기화된 변수가 있습니다.null비동기 콜을 통해 입력됩니다.
앱의 다른 부분은 해당 변수에 따라 달라집니다.true또는false그리고 그것이 아직 있을 때까지 기다려야 한다.null.

이 변수의 변경을 깔끔하게 기다릴 수 있는 방법이 있습니까?

표현식이나 함수에 대해서 그것을 약속으로 포장할 수 있습니다.

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.

일반적으로 이것은 훌륭한 패턴은 아닙니다.대부분의 경우 이를 위해 (약속이 아닌) 계산된 속성을 사용하는 것이 바람직하고 간단합니다.

벤자민의 대답과 비슷하고, 당신이 원하는 것이 정확히는 아니지만, 단지 다른 선택지일 뿐입니다.상태 변화를 감시하는 대신 특정 유형의 변환이 발생했을 때 구독하고 이를 Promise로 래핑할 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/52680002/vuejs-vuex-promise-that-resolves-on-state-change

반응형