2017-12-06 21 views
0

node-async-loop npm 패키지를 사용하여 EXIF ​​이미지 데이터를 푸시합니다. 이 EXIF ​​이미지는 루프에서 AWS S3 스토리지에 저장됩니다. 이 데이터를 배열로 푸시합니다. node-async-loop은 이미지 데이터를 배열로 보내기 전에 결과를 확인합니다. 마지막 이미지가 누락되어 배열의 EXIF ​​데이터를 누를 수 있습니다. 그렇다면 데이터를 푸시하기 전에 결과를 어떻게 해결할 수 있습니까?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

나는 그 작업을 사용하지만 루프 시작 위치는 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)); 
          }