如何将值从 listObjects 推送到数组
how to push values from listObjects to an array
我有一个名为 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);
不推送名称并且数组仍然是空的。哪里错了?
正如 Jaromanda X 所说,listObjects
是异步的,您的函数试图在对象完成之前将值放入数组中。
为了处理这样的 S3 对象,我建议使用 Bluebird promise
我有一个名为 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);
不推送名称并且数组仍然是空的。哪里错了?
正如 Jaromanda X 所说,listObjects
是异步的,您的函数试图在对象完成之前将值放入数组中。
为了处理这样的 S3 对象,我建议使用 Bluebird promise