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

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