Async: L'utilisation d'une fonction AsyncFunction en tant que fonction iteratee entraîne la transmission de l'itération comme non définie

Créé le 26 sept. 2017  ·  4Commentaires  ·  Source: caolan/async

Quelle version d'async utilisez-vous ?
2.5.0

Dans quel environnement le problème s'est-il produit (version du nœud/version du navigateur)
Version du système d'exploitation : OS X 10.12.6
Version du nœud : 8.4.0
Version du navigateur : N/A

Qu'est-ce que tu as fait?

// templateNames is an array of strings
async.map(templateNames, async (templateName, next) => {   
  let template;
  try {
    template = await utils.getFile(templateName);
  } catch(err) {
    next(err);
  }
...
// and so on

Que vous attendiez-vous à ce qu'il se passe?
next est une fonction itérée

Quel a été le résultat réel ?
next est undefined


J'ai fini par utiliser la syntaxe .then().catch() pour atteindre mon objectif, mais je voulais toujours le partager en utilisant un AsyncFunction ( REMARQUE : ce n'est pas la définition async mais le AsyncFunction natif ) fait que l'itéré ( next ) est de type undefined .

docs question

Commentaire le plus utile

async sont traitées différemment à partir de la version 2.3.0 -- elles ne reçoivent pas de rappel. Au lieu de cela, retournez simplement une valeur (ou Promise). En fait, dans votre exemple, même le try / catch n'est pas nécessaire car toute erreur renvoyée sera détectée par Async. Cela devrait simplifier un peu votre code.

// templateNames is an array of strings
async.map(templateNames, async templateName => {   
  const template = await utils.getFile(templateName);
...
// and so on

AsyncFunction docs : http://caolan.github.io/async/global.html

Tous les 4 commentaires

async sont traitées différemment à partir de la version 2.3.0 -- elles ne reçoivent pas de rappel. Au lieu de cela, retournez simplement une valeur (ou Promise). En fait, dans votre exemple, même le try / catch n'est pas nécessaire car toute erreur renvoyée sera détectée par Async. Cela devrait simplifier un peu votre code.

// templateNames is an array of strings
async.map(templateNames, async templateName => {   
  const template = await utils.getFile(templateName);
...
// and so on

AsyncFunction docs : http://caolan.github.io/async/global.html

🤦‍♂️ Lire cette partie des documents plus clairement aurait été intelligent. Merci.

En toute honnêteté, cette description n'est pas si évidente sur le site de docs... 📜

Je pense en fait que c'est assez clair. J'ai d'abord jeté un coup d'œil à la documentation et j'ai raté cette partie.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

caub picture caub  ·  12Commentaires

aearly picture aearly  ·  22Commentaires

kazaff picture kazaff  ·  10Commentaires

ghost picture ghost  ·  9Commentaires

rumkin picture rumkin  ·  22Commentaires