javascript - 為什麼我呼叫vuex中的mutation方法,得到的卻是非同步執行
PHP中文网
PHP中文网 2017-05-18 10:50:21
0
2
561

我在一個子元件中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 裡

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板