我使用node-async-loop
npm包来推送EXIF图像数据。此EXIF图像循环访问AWS S3存储。然后将此数据推送到数组中。但是在将图像数据推入数组之前node-async-loop
解析结果。但缺少最后一个图像来推送数组中的EXIF数据。那么,如何在推送数据之前解决结果?
我把我的代码放在下面:
static getAWSKey(data) {
var result = [];
var totalCount = data.Contents.length;
var counter = 1;
return new Promise(function(resolve, reject) {
asyncLoop(data.Contents, function (item, next) {
console.log('item.....'+JSON.stringify(item));
var urlParams = {Bucket: 'bucketName', Key: item.Key};
s3Bucket.getSignedUrl('getObject', urlParams, function(err, url){
request.get(url, function (err, res, body) {
new ExifImage(body, function (error, exifData) {
if (error) {
console.log('Error: '+ error.message);
result.push(error.message);
} else {
result.push(exifData);
console.log("RESULT:"+JSON.stringify(result));
}
next();
});
});
});
counter++;
if(counter > totalCount) {
console.log('proc succ: finish');
resolve(result);
}
});
});
}
拜托,任何人都可以帮助我。 感谢
答案 0 :(得分:0)
我使用asyncLoop
它的工作,但我的循环开始位置是1.所以,asyncLoop
错过了我的上一条记录。所以,不要显示最后一条记录。
第二件事是我将下面的功能放在另一种方法中。
new ExifImage(body, function (error, exifData) {
if (error) {
console.log('Error: '+ error.message);
result.push(error.message);
} else {
result.push(exifData);
console.log("RESULT:"+JSON.stringify(result));
}