javascript - Pourquoi ai-je une exécution asynchrone lorsque j'appelle une méthode de mutation dans Vuex?
PHP中文网
PHP中文网 2017-05-18 10:50:21
0
2
563

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

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(2)
给我你的怀抱

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.

淡淡烟草味

Les mutations ne sont-elles pas une méthode synchrone ?

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal