suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Warum erhalte ich eine asynchrone Ausführung, wenn ich die Mutationsmethode in Vuex aufrufe?

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中文网2779 Tage vor571

Antworte allen(2)Ich werde antworten

  • 给我你的怀抱

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

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

    Antwort
    0
  • 淡淡烟草味

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

    mutations不是同步方法吗

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

    异步方法放在 actions 里

    Antwort
    0
  • StornierenAntwort