2017-09-20 3 views
2

Ich erhalte eine unerwartete Kennung, wenn ich async verwende oder in nodejs abwartet. Ich bin auf Knoten Version 8.5.0. Völlig blockiert auf diesem. Gibt es trotzdem etwas zu beheben?unerwarteter Bezeichner bei der Verwendung von "erwarten/async" in "nodejs"

async function methodA(options) { 
    rp(options) 
     .then(function (body) {    
      serviceClusterData = JSON.parse(body);   
      console.log("Step 2"); 
      console.log("Getting cluster details from zookeeper"); 
     }) 
     .catch(function (err) { 
      console.log("Get failed!"); 

     }); 
} 

await methodA(options); 
console.log("Step 3!"); 

versucht das nach der ersten Antwort:

var serviceClusterData = ""; 
      console.log("Step 1!"); 

      //////////////////// 

      async function methodA(options) { 
       await rp(options) 
        .then(function (body) { 
         serviceClusterData = JSON.parse(body); 
         console.log("Step 2"); 
         console.log("Getting cluster details from zookeeper"); 
        }) 
        .catch(function (err) { 
         console.log("Get failed!"); 

        }); 
      } 

      methodA(options); 
      console.log("whoops Step 3!"); 

noch außer Betrieb gesetzt wird :( Schritt 1 Schritt 3 Schritt 2

+0

Ja, es gibt einen Weg: zeigen Sie uns Ihren Code. – TGrif

+0

Die Frage wurde mit Code aktualisiert. Danke – user461112

+0

Mögliches Duplikat von ['erwarte Unerwarteter Bezeichner' auf Node.js 7.5] (https://stackoverflow.com/questions/42225480/await-unexpected-identifier-on-node-js-7-5) –

Antwort

4

Sie können nicht await außerhalb eines Asynchron-Funktion verwenden.

async function methodA(options) { 
    await rp(options) 
     .then(function (body) {    
      serviceClusterData = JSON.parse(body);   
      console.log("Step 2"); 
      console.log("Getting cluster details from zookeeper"); 
     }) 
     .catch(function (err) { 
      console.log("Get failed!"); 

     }); 
} 

methodA(options); 
console.log("Step 3!"); 
+0

Hallo, ich versuchte dies jetzt und aktualisierte Frage. Ich bekomme immer noch Befehle aus der Befehlszeile von console.log. :(@TGrif – user461112

+0

Ja, das ist die erwartete Ergebnisreihenfolge. – TGrif

+0

Gibt es eine Möglichkeit, die Ausführung von 'console.log (" whoops Schritt 3! ") Zu blockieren;' bis Methode A abgeschlossen ist? – user461112

Verwandte Themen