9

我有一个无服务器 lambda函数,我想在其中触发(调用)一个方法并忘记它

我正在这样做

   // myFunction1
   const params = {
    FunctionName: "myLambdaPath-myFunction2", 
    InvocationType: "Event", 
    Payload: JSON.stringify(body), 
   };

   console.log('invoking lambda function2'); // Able to log this line
   lambda.invoke(params, function(err, data) {
      if (err) {
        console.error(err, err.stack);
      } else {
        console.log(data);
      }
    });


  // my function2 handler
  myFunction2 = (event) => {
   console.log('does not come here') // Not able to log this line
  }

我注意到,除非我做 a Promise returnin myFunction1,否则它不会触发myFunction2,但不应该设置 lambdaInvocationType = "Event"意味着我们希望它被触发并忘记而不关心回调响应?

我在这里错过了什么吗?

非常感谢任何帮助。

4

1 回答 1

2

myFunction1应该是一个异步函数,这就是函数返回之前myFunction2可以被调用的原因lambda.invoke()。将代码更改为以下内容,然后它应该可以工作:

 const params = {
    FunctionName: "myLambdaPath-myFunction2", 
    InvocationType: "Event", 
    Payload: JSON.stringify(body), 
 };

 console.log('invoking lambda function2'); // Able to log this line
 return await lambda.invoke(params, function(err, data) {
     if (err) {
       console.error(err, err.stack);
     } else {
       console.log(data);
     }
 }).promise();


 // my function2 handler
 myFunction2 = async (event) => {
   console.log('does not come here') // Not able to log this line
 }
于 2019-10-09T12:34:47.277 回答