Async: Pouvez-vous utiliser async.series avec async / wait ?

Créé le 4 nov. 2017  ·  11Commentaires  ·  Source: caolan/async

Pouvez-vous utiliser async wait dans la fonction async.series ?

J'ai fait quelques expériences simples, mais elles n'ont pas fonctionné comme prévu.

docs question

Commentaire le plus utile

Il y a une science folle prévue. 😉

Tous les 11 commentaires

Oui, vous pouvez! Mais au lieu d'utiliser un rappel, retournez simplement une valeur ou lancez une erreur. http://caolan.github.io/async/global.html

D'accord - s'il vous plaît pardonnez-moi Si j'ai mal compris quelque chose Vous aimez ça ?

    const result = await async.each(openFiles, async (file) => {
        try: {
            await asyncOperation(file);
            return null
        } catch(err) {
            return err
        }
    })

Étant donné que les fonctions async convertissent automatiquement les erreurs en rejets, à moins que vous ne vouliez faire quelque chose de spécial avec l'erreur, votre exemple pourrait être réduit à :

    const result = await async.each(openFiles, async (file) => {
        await asyncOperation(file);
    })

Merci pour l'extrait amélioré. Cela semble fonctionner dans un scénario simple, mais dans le cadre suivant, je ne parviens pas à le faire fonctionner :

for (const tasks of fileTasks) {
    const result = await async.each(tasks, async (file) => {
        await asyncOperation(file);
    })
}

J'avais compris que la boucle for-of permettrait des opérations asynchrones?

Puisque async.each ne renvoie pas de promesse, vous ne pouvez pas la await .

Ah d'accord. Donc, l'utilisation de l'option for-of async/await n'est pas un bon modèle avec async. Faites-vous maintenant si c'est sur la feuille de route pour l'async ?

Il y a une science folle prévue. 😉

Ou util.promisify() 😉

(ou pify() )

Pourquoi cela passe-t-il d'une question sur async.series à async.each ?

const _async = require('async');
const _ = require('lodash');

public doSomething = async(num) : Promise<any> => {
     return num*num + 1;
} 

public async getResults() {
    let results = new Array<any>();
    let tasks = [];

    try {
      const list = [1,2,3,4,5,6,7,8,9,10];

      list.forEach((item) => {
        tasks.push((callback) => {
          this.doSomething(item.then(
            (res) => {
              results.push(res);
              callback(null, res);
            }
          );
        })
      })

      results = await new Promise((resolve) => {
        _async.series(tasks, (err, res) => {
          console.log(res);
          if (err) {
            results.push(err);
          }
          resolve(results);
        })
      });
    } catch (err) {
      results.push(err.message);
      console.log(err);
    }

    return _.join(results, '\r\n');
  }



@aearly Hey fen pourriez-vous s'il vous plaît me dire quelle version extracly prend en charge async/wait ?
J'utilise caolan/async version 2.6.0

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