J'ai une fonction de clic dans les méthodes d'un composant enfant
takehash(index){
let hash = this.searchList[index].hash;
this.$store.commit('playvideo', hash);
console.log(this.$store.state.box.Url);
}
Il existe une méthode dans les mutations de magasin
playvideo(state,hash){
Vue.http.get("json.php"+hash).then(res=> {
let jsonObj = res.data;
state.box.Url= jsonObj.url;
console.log('no');
});
}
Mais j'ai découvert que le processus que je voulais était de valider la méthode playvideo, et après avoir exécuté la méthode playvideo, la console a affiché son URL
Mais le résultat a été que la console a d'abord publié l'URL, puis la playvideo. La méthode a été exécutée. Les mutations ne sont-elles pas une méthode synchrone ? Pourquoi ? Exécution retardée, je suis nouveau sur vuex, aidez-moi à le résoudre
Théoriquement, les mutations ne sont utilisées que pour placer des méthodes synchrones. Elles ne peuvent pas utiliser de méthodes asynchrones
Et vous mettez une méthode asynchrone dans votre lecture vidéo
Alors le résultat de l'exécution doit être asynchrone.
La synchronisation des mutations signifie que vous devez vous assurer que les méthodes des mutations sont synchrones, et non des mutations qui transforment vos méthodes asynchrones en synchronisation.
Les méthodes asynchrones sont placées dans les actions