【问题标题】:Use of async in Amazon Lambda example?在 Amazon Lambda 示例中使用异步?
【发布时间】:2015-08-09 20:01:19
【问题描述】:

我正在查看 Amazon Lambda 用于在 S3 存储桶中调整图像大小的示例代码。 Example code(为清晰起见截断):

// 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

...表明他们正在使用异步瀑布。但是,这些有序步骤中的每一个似乎都依赖于前一个函数的结果。所以本质上,这是一个顺序操作。

在这里使用异步瀑布有什么好处?这与亚马逊的 Lambda 执行引擎有关,还是只是节点中的一个明智的设计决策?

【问题讨论】:

    标签: node.js amazon-web-services asynchronous aws-lambda


    【解决方案1】:

    正如您所描述的,这基本上是一个明智的设计决定。 该示例的作者基本上没有使用"callback hell",而是使用waterfall 来扁平化代码。

    替代代码如下所示:

    s3.getObject({Bucket: srcBucket, Key: srcKey}, function(response){
      gm(response.Body).size(function(err, size) {
      // do resize with image magic
      }
    });
    

    哪个可读性较差,并且随着向处理中添加步骤会变得更加复杂且可读性更低。

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2022-06-12
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多