Tengo el siguiente código para descargar mis archivos de cubos s3:
async function downloadS3Files(options) { let s3client = new s3fs(options.bucket, s3options), files = await s3client.readdirp(options.object); return new Promise((resolve, reject) => { eachLimit(files, maxAsync, (file, callback) => { if ("/" === file.slice("-1")) { return callback(); } let source = `${options.object}/${file}`, destination = `_input/${source}`; debug(destination); mkdirp(dirname(destination)).then(() => { let stream = s3client.createReadStream(source).pipe(createWriteStream(destination)); stream.on("error", reject); stream.on("close", callback); }).catch(reject); }, () => { resolve(options) }); }); }Y funciona... pero quiero evitar la parte eachLimit, porque no puedo usar await dentro de un constructor Promise. ¿Hay algún otro módulo que me ayude a manejar el máximo de operaciones asincrónicas de una manera Promesa?
Gracias.
¿Hay algún otro módulo que me ayude a manejar el máximo de operaciones asincrónicas de una manera Promesa?
Hay algunos módulos que pueden ayudarte con eso:
Para escenarios más complicados, puede usar Task.js; consulte:
pero usa generadores para generar promesas en lugar de async/await.