¿Puedes usar async await dentro de la función async.series?
Hice algunos experimentos sencillos, pero no funcionaron como esperaba.
¡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. 😉
O util.promisify()
😉
(o pify()
)
¿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
Comentario más útil
Hay algo de ciencia loca planeada. 😉