0

我想将图像裁剪成各种尺寸并将它们上传到 AWS S3。裁剪尺寸存储在一个数组中。

我正在使用async瀑布和series方法来实现这一点。

async.each(crop_sizes,function (result,cb) {

            async.waterfall([
                /*
                 * Crop the images to specific size
                 */
                function (callback) {
                    gm(path)
                        .resize(result.width,result.height,'^')
                        .stream(function (err,buffer) {
                            console.log('cropped')
                            callback(null,{'buffer':buffer,'filename':filename,'s3':s3});
                        });
                },
                function (output,callback) {
                    var params ={
                        Bucket:'mybucket',
                        Key:'artwork-croppedimages/'+result.folder+output.filename,
                        Body:output.buffer
                    }

                    var options ={
                        partSize: 5242880, queueSize: 1
                    };

                    s3.upload(params,options,function(err, data) {
                        console.log("upload");

                        callback();
                    });
                }

            ],function (err,result) {
                console.log("one iteration completed");
                cb();
            });
        },function (err,result) {
            console.log("All upload complete");
        });

这就是代码的执行方式:

在 中重复步骤 1 和 2 async.each

  1. 裁剪图像。

  2. 将裁剪后的图像上传到 AWS S3。

但上传大尺寸图片时失败。这是我得到的输出:

cropped
cropped
cropped
cropped
cropped
cropped
cropped
cropped
cropped
cropped
cropped
cropped
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
upload
one iteration completed
All upload complete

预期输出:

 cropped
   upload
   one iteration completed
  cropped
   upload
   one iteration completed
   .....
  All upload complete
4

1 回答 1

0

可以试试async.eachOfSeries功能吗?我怀疑该async.each函数并行运行迭代器(如文档中所述),这一定是导致问题的原因。

于 2017-09-19T08:50:42.223 回答