如何将值从 listObjects 推送到数组

Posted

技术标签:

【中文标题】如何将值从 listObjects 推送到数组【英文标题】:how to push values from listObjects to an array 【发布时间】:2016-01-13 21:20:03 【问题描述】:

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

【问题讨论】:

我怀疑listObjects 是异步的,您在listObjects 完成之前检查yourArray 的内容 是的 @JaromandaX 这个过程在一个名为“async”的异步模块中。那么,我应该如何处理 yourArray? 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何将值从 listObjects 推送到数组的主要内容,如果未能解决你的问题,请参考以下文章

Android - 将值从 sqlite 数据库加载到数组列表

如何将值推送到 Cypher 中的属性数组?

如何将值推送到 QML 属性变量二维数组 - 动态?

如何按键过滤数组并使用javascript将值推送到另一个数组

如何将值和键都推送到 PHP 数组中

如何将值推送到本地存储?