javascript - 为什么我调用vuex中的mutation方法,得到的却是异步执行
PHP中文网
PHP中文网 2017-05-18 10:50:21
[JavaScript讨论组]

我在一个子组件中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 里

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号