我有一个无服务器 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
}
我注意到,直到并且除非我在Promise
中执行return
myFunction1
,它不会触发myFunction2
,但不应设置lambda {{ 1}}的意思是我们希望这是一劳永逸,而不在乎回调响应吗?
我在这里想念东西吗?
我们非常感谢您的帮助。
答案 0 :(得分: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
}