我在一个子组件中methods里有一个点击函数
takehash(index){
let hash = this.searchList[index].hash;
this.$store.commit('playvideo', hash);
console.log(this.$store.state.box.Url);
}
store的mutations里有一个方法
playvideo(state,hash){
Vue.http.get("json.php"+hash).then(res=> {
let jsonObj = res.data;
state.box.Url= jsonObj.url;
console.log('no');
});
}
但是我发现我想要的过程是commit playvideo方法后,执行playvideo方法后,console出来他的url,
但是结果却是先console出来url,然后才执行playvideo方法,mutations不是同步方法吗,为什么会延迟执行,我刚接触vuex,求大神解决
理论上mutations只用来放同步的方法.而不能使用异步.
而你的playvideo里面放了个异步方法.
那执行结果肯定是异步啊.
mutations 同步的意思是你要保证 mutations 里的方法是同步的,并不是 mutations 把你异步的方法变成同步。
异步方法放在 actions 里