Vuex 突变是原子的吗?
Is Vuex mutations are atomic?
我想了解 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);
},
}
谢谢
突变只是普通的同步函数,所以是的,它们是原子的。没有两个突变会同时执行,前提是您没有在其中任何一个内部执行任何异步操作,例如获取请求、setTimeout
或承诺,或者在另一个突变中间接调用一个突变。
当 Vue 检测到已对响应式数据进行更改时,这些更改事件将排队,观察者将在下一个微任务(异步)中执行。
突变是原子的,因为它们的处理函数必须始终是同步的,如文档中所述:https://vuex.vuejs.org/guide/mutations.html
如果您反对这种做法并使处理程序函数异步,那么它们将不再是原子的。
我想了解 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);
},
}
谢谢
突变只是普通的同步函数,所以是的,它们是原子的。没有两个突变会同时执行,前提是您没有在其中任何一个内部执行任何异步操作,例如获取请求、setTimeout
或承诺,或者在另一个突变中间接调用一个突变。
当 Vue 检测到已对响应式数据进行更改时,这些更改事件将排队,观察者将在下一个微任务(异步)中执行。
突变是原子的,因为它们的处理函数必须始终是同步的,如文档中所述:https://vuex.vuejs.org/guide/mutations.html
如果您反对这种做法并使处理程序函数异步,那么它们将不再是原子的。