Vuex突变是原子突变吗



我正在努力了解Vuex中的突变是否是原子突变。我有这个代码,我不确定是否有任何情况下,当CHANGE_B还没有完成时,会调用CHANGE_A突变:

const mutations = {
[CHANGE_A](state, DATA) {
Vue.set(this.test, 'left', DATA);
},
[CHANGE_B](state, data) {
Vue.set(this.test, 'right', DATA);
Vue.set(this.test, 'left', DATA);
},
}

谢谢

突变是原子的,因为它们的处理程序函数必须始终是同步的,如文档中所述:https://vuex.vuejs.org/guide/mutations.html

如果您反对这种做法,并使处理程序函数异步,那么它们将不再是原子函数。

突变只是普通的同步函数,所以它们是原子函数。没有两个突变会同时执行,前提是您没有在它们中的任何一个内部执行任何异步操作,如获取请求、setTimeout或promise,或间接调用另一个突变中的突变。

当Vue检测到对响应数据进行了更改时,这些更改事件将被排队,观察者将在下一个微任务中执行(异步(。

最新更新