代码之家  ›  专栏  ›  技术社区  ›  Tzvetlin Velev

通过回调从lambda获取响应并让lambda继续工作

  •  0
  • Tzvetlin Velev  · 技术社区  · 5 年前

    假设我有这个lambda函数:

    exports.handler = (event, context, callback) => {
      lambda.invoke({
        FunctionName: 'longCheckout',
        InvocationType: 'Event',
        Payload: JSON.stringify(event, null, 2) // pass params
      }, function(error, data) {
    
        console.log(error, data)
        callback(null, data);
      });
    };

    我想调用longcheckout lambda,它将做一些工作,并向调用lambda发送响应,然后继续执行更长的请求。所以我调用的lambda函数有一个回调参数,但是当我调用传入函数时,在调用lambda时什么也没有发生。这是我叫的lambda的样子

    exports.handler = (event, test, callback) => {
      docClient.update(params, function(err, data) {
        callback(....)
        // continue to execute 
      })
    }
    0 回复  |  直到 5 年前
        1
  •  1
  •   Ronyis    5 年前

    lambda可以同步调用(使用的默认行为),也可以异步调用。 如果您选择异步调用,两个lambda将同时继续运行,但您将无法获得任何返回值。

    一个可行的解决方案是:

    1. lambda 1同步调用lambda 2
    2. λ2呼叫 docClient.update 并异步调用lambda 3(然后返回)。
    3. lambda 3执行所需的其余操作。

    this 关于异步调用。