2017-12-06 9 views
0

node-async-loop npmパッケージを使用してEXIF画像データをプッシュします。このEXIFイメージはループ内のAWS S3ストレージに格納されます。このデータを配列にプッシュします。 node-async-loopは画像データを配列にプッシュする前に結果を解決します。配列内のEXIFデータをプッシュする最後のイメージがありません。だから、どのようにデータをプッシュする前に結果を解決することができますか?ノード非同期ループを使用して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

私はasyncLoopを使用していますが、私のループ開始位置は1です。したがって、私の最後のレコードはasyncLoopで逃しています。したがって、最後のレコードを表示しないでください。

もう1つの方法は別の方法で機能させています。

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)); 
          } 
関連する問題