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

时间:2018-04-06 08:50:07

标签: 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));
    });

我原本期望Lambda在响应时终止,但我得到了几个回调

1 个答案:

答案 0 :(得分:4)

这里发生的是你正在调用“回调”方法,然后继续。基本上你的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));
    }
});

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

if (err){
  callback(params),
  return;
}

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