如何将值从 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 数据库加载到数组列表