officially, mutation must be a Synchronize function, but I think it is perfectly possible to put asynchronous operations in methods, and then commit a mutation, in the callback. Why should Vuex introduce action to solve such asynchronous problems?
changes from methods "asynchronous callback" commit ("mutation") ,
to methods "dispatch (" action")" asynchronous callback "commit ("mutation") ,
there is no need to add one more step, it feels a bit like forcibly relying on Flux .