예를 들어 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를 사용하는 것이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다