2017-01-20 4 views
14

Ich dachte, async/await in Knoten 7.4, unterstützt wurde jedoch dieses Beispiel nicht funktioniert:Mit async/erwarten in Knoten 7.4

const Promise = require('bluebird'); 

async function main(){ 
    await Promise.delay(1000) 
} 

main(); 

Ergebnisse in:

async function main(){ 
     ^^^^^^^^ 
SyntaxError: Unexpected token function 

Wie kann ich async verwenden/erwarten mit Knoten 7.4?

+0

Mögliche Duplikat [async erwarten mit NodeJS 7] (http://stackoverflow.com/questions/41347260/async-await-with-nodejs- 7) –

Antwort

48

Ja Asynchron-await in Node.js v7 unterstützt wird, aber seine hinter dem harmony Flagge gesperrt. Funktionen, die noch nicht produktionsreif sind, stehen hinter dieser Flagge.

node --harmony-async-await app.js

Die offizielle Veröffentlichung von Asynchron-await ist geplant, für Node.js v8, die in den Markt kommt -

Um Asynchron-await in Node.js v7 einfach Knoten Service mit dieser Flagge laufen zu verwenden April.

Sie können this Pull Request folgen, um seinen Status zu überprüfen. Grundsätzlich hängt die korrekte Funktionsweise von async-await von der Integration der V8 Engine v5.5 in Node.js ab. Gegenwärtig verwendet Node.js V8 v5.4, welches durch diese Pull-Anfrage gelöst wird.

Update 1 - Es scheint, dass V8 v5.5 zu Node.js v7 kommen könnte. Folgen Sie this Pull-Anforderung für weitere Details.

Update 2 - Gute Nachrichten Jungs! Node.js Version 7.6.0 unterstützt jetzt offiziell async Funktionen, ohne das Flag --harmony zu verwenden, da die V8-Engine 5.5 erfolgreich portiert wurde.

Jetzt müssen Sie nur das --harmony Flag verwenden, wenn Ihre Node.js Version zwischen 7.0 bis 7.5.0 (inklusive) ist. Für einen vollständigen Änderungsprotokoll siehe here.

2

Sie benötigen Harmonie-Flag, damit dies funktioniert.

Versuchen Sie es erneut mit node --harmony-async-await myscript.js

14

Node.js 7.6.0 vor einigen Stunden veröffentlicht und sie enthalten V8 5.5. Jetzt können Sie Async/erwarten ohne Flag verwenden.

2

Die Knotenversion 7.6 unterstützt nun async/await out of the box. Wenn Sie es noch nicht ausprobiert haben, sollten Sie es sofort übernehmen und niemals zurückblicken.

const makeRequest =() => 
     getJSON() 
     .then(data => { 
      console.log(data) 
      return "done" 
     }) 

    makeRequest() 

Und mit Asynchron/await:

const makeRequest = async() => { 
    console.log(await getJSON()) 
    return "done" 
} 

makeRequest()