【发布时间】:2015-03-26 14:22:33
【问题描述】:
我在 S3 中有以下文件夹结构。
照片/id1/图库/pic1
照片/id2/图库/pic2
照片/id3/menu/pic3
我写了以下sn-p来列出每个id中的图片
var restids=['id1','id2','id3'];
for(var i=0;i<restids.length;i++)
{
(function(i){
setTimeout(function(){
var getparams ={Bucket:'photos' , Marker:restids[i]+'/'};
(function(par){
setTimeout(function(){
s3.listObjects(par,function(err,data){
if(err){
console.log('err fetching images from s3 '+err);
}
else{
console.log(_.pluck(data.Contents,'Key'));
}
});
});
})(getparams);
});
})(i);
}
上述sn-p的预期结果是
['id1/gallery/pic1']
['id2/gallery/pic2']
['id3/menu/pic3']
但实际结果是
['id1/gallery/pic1']
['id1/gallery/pic1','id2/gallery/pic2']
['id1/gallery/pic1','id2/gallery/pic2','id3/menu/pic3']
每个返回值都包含之前调用的值。
我无法理解这种奇怪的行为。
是由于回调,还是 API 本身有问题,还是我的代码有问题?
如果有人能向我解释这一点,我将不胜感激。
提前致谢。
【问题讨论】:
标签: javascript node.js amazon-s3 callback aws-sdk