我有一个名为yourArray的数组。 var yourArray = [];
当我从s3获取带有listObjects的对象名称时,我想将此对象名称推送到数组。
var params ={
Bucket: 'exBucket',
Prefix: 'somePrefix'
};
s3.listObjects(params, function(Err, Data){
if(!Err){
for (var i = 0; i < Data.Contents.length; i++){
console.log('Listed: ', Data.Contents[i].Key);
yourArray.push(Data.Contents[i].Key);
}
};
});
在这里,console.log('Listed: ', Data.Contents[i].Key);
给了我所有的名字。但是yourArray.push(Data.Contents[i].Key);
没有推送名称,数组仍然是空的。错误在哪里?
答案 0 :(得分:1)
正如Jaromanda X所说,listObjects
是异步的,你的函数试图在对象完成之前将值放入数组中。
为了处理这样的S3对象,我建议使用Bluebird promise