Async: ¿Puedes usar async.series con async / await?

Creado en 4 nov. 2017  ·  11Comentarios  ·  Fuente: caolan/async

¿Puedes usar async await dentro de la función async.series?

Hice algunos experimentos sencillos, pero no funcionaron como esperaba.

docs question

Comentario más útil

Hay algo de ciencia loca planeada. 😉

Todos 11 comentarios

¡Sí tu puedes! Pero en lugar de usar una devolución de llamada, simplemente devuelva un valor o arroje un error. http://caolan.github.io/async/global.html

Ok, por favor perdóname si entendí mal algo 😄 ¿Como esto?

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

Dado que las funciones async convierten automáticamente los errores en rechazos, a menos que desee hacer algo especial con el error, su ejemplo podría reducirse a:

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

Gracias por el fragmento mejorado. Parece funcionar en un escenario simple, pero en la siguiente configuración no puedo hacer que funcione:

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

¿Tenía entendido que el bucle for-of permitiría operaciones asincrónicas?

Como async.each no devuelve una Promesa, no puedes await eso.

Ahh ok. Entonces, usar la opción for-of async / await no es un buen patrón con async. ¿Ahora si esto está en la hoja de ruta para async?

Hay algo de ciencia loca planeada. 😉

¿Por qué pasa de una pregunta sobre async.series a 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, ¿podría decirme qué versión extracly admite async / await?
Estoy usando caolan / async versión 2.6.0

¿Fue útil esta página
0 / 5 - 0 calificaciones