Você pode usar async await dentro da função async.series?
Fiz alguns experimentos simples, mas não funcionaram como esperado.
Sim você pode! Mas, em vez de usar um retorno de chamada, basta retornar um valor ou lançar um erro. http://caolan.github.io/async/global.html
Ok - por favor, me perdoe Se eu interpretar mal alguma coisa 😄 Assim?
const result = await async.each(openFiles, async (file) => {
try: {
await asyncOperation(file);
return null
} catch(err) {
return err
}
})
Como as funções async
convertem automaticamente erros em rejeições, a menos que você queira fazer algo especial com o erro, seu exemplo pode ser reduzido a:
const result = await async.each(openFiles, async (file) => {
await asyncOperation(file);
})
Obrigado pelo trecho aprimorado. Parece funcionar em um cenário simples, mas na configuração a seguir não consigo fazer funcionar:
for (const tasks of fileTasks) {
const result = await async.each(tasks, async (file) => {
await asyncOperation(file);
})
}
Eu achava que o loop for-of permitiria operações assíncronas.
Visto que async.each
não retorna uma promessa, você não pode await
it.
Ahh, certo. Portanto, usar a opção for-of async / await não é um bom padrão com async. Você sabe agora se isso está no roteiro para assíncrono?
Há alguma ciência maluca planejada. 😉
Ou util.promisify()
😉
(ou pify()
)
Por que isso vai de uma pergunta sobre async.series
para 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 Ei fen, você poderia me dizer qual versão extracly suporta async / await?
Estou usando caolan / async versão 2.6.0
Comentários muito úteis
Há alguma ciência maluca planejada. 😉