recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Pourquoi ai-je une exécution asynchrone lorsque j'appelle une méthode de mutation dans Vuex?

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中文网2779 Il y a quelques jours569

répondre à tous(2)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:52:21

    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.

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-18 10:52:21

    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

    répondre
    0
  • Annulerrépondre