使用节点异步循环将 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));
                          }