【发布时间】:2017-07-24 22:43:10
【问题描述】:
我必须使用 node.js 从 S3 存储桶下载多个文件。为此,我必须编写 for loop 并调用 s3.getObject(param) 方法进行下载。下载文件后,我必须合并它们的内容。
我是这样写的:
var fileContentList = new ArrayList();
for(i=0; i<fileNameList.length i++){
s3.getObject({ Bucket: "my-bucket", Key: fileNameList.get(i) }, function (error, data) {
if (error != null) {
alert("Failed to retrieve an object: " + error);
} else {
alert("Loaded " + data.ContentLength + " bytes");
fileContentList.add(data.Body.toString());
}
}
);
}
//Do merging with the fileContentList.
但由于s3.getObject 是一个异步调用,当前线程继续前进,而在我进行合并时,没有任何内容被添加到fileContentList。
我该如何解决这个问题?有什么想法吗?
他们在 aws-sdk 中是否有任何同步方法来下载文件?
【问题讨论】:
标签: javascript node.js amazon-web-services amazon-s3 aws-sdk-nodejs