Je pensais que async/wait était pris en charge dans le nœud 7.4, mais cet exemple ne fonctionne pas:
const Promise = require('bluebird');
async function main(){
await Promise.delay(1000)
}
main();
Résulte en:
async function main(){
^^^^^^^^
SyntaxError: Unexpected token function
Comment puis-je utiliser async/wait avec le nœud 7.4?
Oui, async-wait est pris en charge dans Node.js v7 mais il est verrouillé derrière l'indicateur harmony
. Les fonctionnalités qui ne sont pas encore prêtes pour la production sont derrière ce drapeau.
Pour utiliser async-wait dans Node.js v7, exécutez simplement Node service avec cet indicateur -
node --harmony-async-await app.js
La sortie officielle d'Async-Wait est prévue pour Node.js v8 qui sera lancé en avril.
Vous pouvez suivre this pull request pour vérifier son statut. Fondamentalement, le bon fonctionnement d'Async-Wait dépend de l'intégration du moteur V8 v5.5 dans Node.js. Actuellement, Node.js utilise V8 v5.4 qui est résolu par cette demande de tirage.
Mise à jour 1 - Il semblerait que V8 v5.5 arrive sur Node.js v7. Suivez this pull request pour plus de détails.
Mise à jour 2 - Bonne nouvelle les gars! La version 7.6.0 de Node.js prend désormais officiellement en charge les fonctions async
sans utiliser le --harmony
drapeau comme moteur V8 5.5 a été porté avec succès.
Il ne vous reste plus qu'à utiliser le --harmony
flag si votre version de Node.js est comprise entre 7.0 et 7.5.0 (inclus). Pour le journal des modifications complet, reportez-vous à ici .
Node.js 7.6.0 est sorti il y a plusieurs heures et incluait la v8 5.5. Vous pouvez maintenant utiliser async/wait sans indicateur.
Vous aurez besoin d'un drapeau d'harmonie pour que cela fonctionne.
Réessayez avec node --harmony-async-await myscript.js
La version 7.6 du nœud prend désormais en charge async/wait out of the box. Si vous ne l'avez pas encore essayé, vous devez l'adopter immédiatement et ne jamais regarder en arrière.
const makeRequest = () =>
getJSON()
.then(data => {
console.log(data)
return "done"
})
makeRequest()
Et en utilisant async/wait:
const makeRequest = async () => {
console.log(await getJSON())
return "done"
}
makeRequest()
J'ai eu le même problème, ce que j'ai fait est installé asyncawait en utilisant la commande ci-dessous
npm install asyncawait
ensuite j'ai déclaré wait et async en utilisant la commande ci-dessous
const async = require('asyncawait/async');
const await = require('asyncawait/await');
puis les ai utilisés là où c'était nécessaire, mais mes commandes se trouvaient dans async(my-code) & await(my-code)
.
Et cela a parfaitement fonctionné pour moi.