回调后如何停止执行AWS Lambda?

jai*_*err 0 aws-lambda

我在API后面有一个Lambda,如果未提供正确的参数,则想响应一个错误。我可以使用回调发送消息,但是发送消息时是否可以停止执行?我附上示例代码:

    dynamodb.putItem(add_params, function(err, data) {
     if (err) callback(null,respond({Success:{BOOL:false},Error{S:JSON.stringify(err)}}));
     if (data==null) callback(null,respond({Success:{BOOL:false},Error:{S:"No data in previous step"}}));
     callback(null,respond(return_JSON));
    });
Run Code Online (Sandbox Code Playgroud)

我本以为Lambda会在响应时终止,但是我收到了几个回调

Yog*_*h_D 5

这里发生的是您正在调用“回调”方法,然后继续。基本上,您if的错误检查结果为true,将调用回调,但是如果您在其中检查代码,则代码将继续到下一个data == null

dynamodb.putItem(add_params, function (err, data) {
    if (err) {
        callback(null, respond({ Success: { BOOL: false }, Error{ S: JSON.stringify(err) } }));
    } else if (data == null) {
        callback(null, respond({ Success: { BOOL: false }, Error: { S: "No data in previous step" } }));
    } else {
        callback(null, respond(return_JSON));
    }
});
Run Code Online (Sandbox Code Playgroud)

另一种方法是在回调之后返回。这样做:

if (err){
  callback(params),
  return;
}
Run Code Online (Sandbox Code Playgroud)

这将使您的程序控件从传递给dynamodb.putItem的回调中返回。