Node.js async:在for循环中上传后的成功消息

时间:2017-07-18 10:09:38

标签: node.js express asynchronous

这是我在循环中将一些数据上传到aws s3的功能。

    for (var i=0;i<crop_sizes.length;i++){
                uploadToS3(crop_sizes[i]);
            }

function uploadToS3(crops){

   s3.upload(crops,function(err,success){
     if(!err){
       console.log('uploaded');
     }
})

}

它的工作正常,但我想在所有上传后显示成功消息,那么我怎么能实现它async libray。

2 个答案:

答案 0 :(得分:1)

如果你想坚持使用这个库,可以使用async.each

each(crop_sizes, s3.upload.bind(s3), function(err) {
  if(err) { 
    console.error(err)
  } else {
    console.log('success')
  }
})

答案 1 :(得分:0)

var promises = [];
for (var i = 0; i < crop_sizes.length; i++) {
    promises.push(uploadToS3(crop_sizes[i]));
}
function uploadToS3(crops) {
    return new Promise((resolve, reject) => {
        s3.upload(crops, function (err, success) {
            if (err) {
                return reject();
            }
            resolve();
        })
    });
}
Promise.all(promises).then(function () {
    console.log('success');
}).catch(function (err) {
    console.error(err);
});