【问题标题】:AWS Lambda: Is there a benefit to using an async handler function for the Node runtime?AWS Lambda:对 Node 运行时使用异步处理函数有什么好处?
【发布时间】:2021-08-01 01:52:11
【问题描述】:

我正在使用 Node.js Lambda 函数创建一个 AWS SAM 应用程序。默认模板有一个异步处理函数:

exports.lambdaHandler = async (event, context) => {
  // ...
  return {
    statusCode: 200,
    body: JSON.stringify({ hello: "world" })
  };
};

将这个处理函数设置为 asyncsync 有什么好处,因为我的理解是每次调用 Lambda 函数时,它都会与其他实例分开运行?

【问题讨论】:

  • async 允许您在函数体中使用await。如果您不使用await,那么几乎没有理由使用async

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


【解决方案1】:

如果您想使用 return 和 throw 分别从函数处理程序发送响应或错误,请使用异步处理程序函数。

您可以使用非异步处理程序,但它仅在事件循环为空或函数超时时终止函数执行。

参考:https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html

【讨论】:

    【解决方案2】:

    AWS Lambda 也处理同步函数和异步函数。 async 意味着两件事:

    • 函数返回Promise
    • 你可以在里面使用await

    AWS Lambda 恰好将 Promises 理解为返回值,这就是为什么 async 函数也能正常工作的原因。因此,如果您需要await,请选择async

    您也不能将函数声明为 asyncreturn Promise(或 Promise 链)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-27
      • 2019-01-27
      • 2012-04-23
      • 2015-04-03
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多