【发布时间】:2017-08-19 05:44:17
【问题描述】:
我有以下代码可以从 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 构造函数中使用 await 。是否有任何其他模块可以帮助我以 Promise 方式处理最多的异步操作?
谢谢。
【问题讨论】:
标签: node.js amazon-web-services asynchronous amazon-s3