如何将值从listObjects推送到数组

时间:2015-10-15 12:07:32

标签: javascript arrays amazon-web-services amazon-s3 amazon

我有一个名为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);没有推送名称,数组仍然是空的。错误在哪里?

1 个答案:

答案 0 :(得分:1)

正如Jaromanda X所说,listObjects是异步的,你的函数试图在对象完成之前将值放入数组中。

为了处理这样的S3对象,我建议使用Bluebird promise

https://www.npmjs.com/package/aws-promised