javascript - Warum erhalte ich eine asynchrone Ausführung, wenn ich die Mutationsmethode in Vuex aufrufe?
PHP中文网
PHP中文网 2017-05-18 10:50:21
0
2
566

Ich habe eine Klickfunktion in Methoden in einer untergeordneten Komponente

takehash(index){
                   let hash = this.searchList[index].hash;
                   this.$store.commit('playvideo', hash);
                   console.log(this.$store.state.box.Url);
           }

Es gibt eine Methode in den Mutationen von Store

playvideo(state,hash){
                   Vue.http.get("json.php"+hash).then(res=> {
                           let jsonObj = res.data;
                        state.box.Url= jsonObj.url;
                        console.log('no');
                   });
            }

Aber ich fand, dass der Prozess, den ich wollte, darin bestand, die Playvideo-Methode festzuschreiben, und nach der Ausführung der Playvideo-Methode kam die Konsole mit ihrer URL heraus.
Aber das Ergebnis war, dass die Konsole zuerst die URL und dann das Playvideo herausgab Methode wurde ausgeführt. Sind Mutationen keine synchrone Methode? Ich bin neu bei Vuex, bitte helfen Sie mir, das Problem zu lösen

PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen(2)
给我你的怀抱

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

淡淡烟草味

mutations不是同步方法吗

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

异步方法放在 actions 里

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage