it-source

Vuex: 디스패치에서는 약속을 반환하여 체인으로 묶을 수 있습니까?

criticalcode 2022. 10. 30. 11:09
반응형

Vuex: 디스패치에서는 약속을 반환하여 체인으로 묶을 수 있습니까?

아직 앱을 코딩하고 있지 않기 때문에 테스트 할 수 없습니다만, 디스패치를 체인으로 하고 싶은 경우는, 디스패치를 동시에 실행할 수 있습니까?

예:

this.$store.dispatch('doSomething', {
    'url': '/admin/do-something',
    'user_id': userId,
})
.then(response => {
    this.$store.dispatch('doSomething2', {
       'url': '/admin/do-something-2',
       'user_id': userId,
    })
})

정답.

vuex 설명서에 따르면:

디스패치

dispatch(type: 문자열, 페이로드): any, 옵션? :오브젝트):약속 <임의>
디스패치(액션:오브젝트, 옵션:오브젝트):약속 <임의>

즉, 디스패치에서는 항상 다음 메시지가 반환됩니다.Promise따라서 이론상으로는 디스패치 체인을 통해 특정 주문을 확실하게 할 수 있습니다.

추가의

게다가 이러한 조작을 항상 이 순서로 실시할 필요가 있는 경우는, 1개의 조작을 실시해, 각각을 개별적으로 디스패치 하는 것을 검토해 주세요.

일부 Vuex Module.js

...
export const actions = {
  async doSomethingMaster({ dispatch }) {
    await dispatch('doSomething');
    await dispatch('doSomething2');
    await dispatch('doSomething3');
    
  },
  doSomething() {},
  doSomething2() {},
  doSomething3() {},
}

...

언급URL : https://stackoverflow.com/questions/64471277/vuex-does-dispatch-return-a-promise-so-that-you-can-chain-them

반응형