我有以下代码从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)
});
});
}
它的工作原理......但我想避免使用eachLimit部分,因为我无法在Promise构造函数中使用等待。还有其他模块可以帮助我以Promise的方式处理最大的异步操作吗?
谢谢。
答案 0 :(得分:0)
还有其他模块可以帮助我以Promise方式处理最多的异步操作吗?
有几个模块可以帮助您:
对于更复杂的场景,您可以使用Task.js - 请参阅:
但它使用生成器来产生promises而不是async / await。