javascript - 为什么我调用vuex中的mutation方法,得到的却是异步执行
PHP中文网
PHP中文网 2017-05-18 10:50:21
0
2
567

我在一个子组件中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,求大神解决

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
给我你的怀抱

理论上mutations只用来放同步的方法.而不能使用异步.
而你的playvideo里面放了个异步方法.
那执行结果肯定是异步啊.

淡淡烟草味

mutations不是同步方法吗

mutations 同步的意思是你要保证 mutations 里的方法是同步的,并不是 mutations 把你异步的方法变成同步。

异步方法放在 actions 里

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板