web-dev-qa-db-fra.com

Utiliser async / wait dans le nœud 7.4

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?

15
Antoine

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 .

49
Jyotman Singh

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.

14
Dmitriy Eroshenko

Vous aurez besoin d'un drapeau d'harmonie pour que cela fonctionne.

Réessayez avec node --harmony-async-await myscript.js

2
Tuan Anh Tran

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()
2
sagar jethi

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.

0
sankalp nayak