使用节点异步循环将 EXIF 图像数据推送到数组中
push EXIF image data in array using node-async-loop
我使用 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);
}
});
});
}
拜托,任何人都可以帮助我。
谢谢
我使用 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));
}
我使用 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);
}
});
});
}
拜托,任何人都可以帮助我。 谢谢
我使用 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));
}