我正在查看Amazon Lambda的示例代码,以调整S3存储桶中的图像大小。示例代码(为清晰起见,已删除):
// Download the image from S3, transform, and upload to a different S3 bucket.
async.waterfall([
function download(next) {
// Download the image from S3 into a buffer.
s3.getObject({Bucket: srcBucket, Key: srcKey}, next);
},
function tranform(response, next) {
gm(response.Body).size(function(err, size) {
// do resize with image magic
}
}
]);
//... more handling code
...表明他们正在使用异步瀑布。但是,这些有序步骤似乎都依赖于先前功能的结果。因此,实质上,这是一个顺序操作。
在这里使用异步瀑布有什么好处?这与Amazon的Lambda执行引擎有关,还是与节点中明智的设计决定有关?
正如您所描述的,这基本上是明智的设计决策。该示例的作者没有进入“回调地狱”,而是基本上使用了代码的扁平化waterfall
。
备用代码如下所示:
s3.getObject({Bucket: srcBucket, Key: srcKey}, function(response){
gm(response.Body).size(function(err, size) {
// do resize with image magic
}
});
它的可读性较差,并且随着将步骤添加到处理中,可能变得更加复杂且可读性更差。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句