我在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在响应时终止,但我得到了几个回调
答案 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的回调返回。