我正在尝试调用异步 lambda 函数within另一个 lambda 函数,我发现如果调用函数退出得太快,它就不会被执行。
换句话说,以下内容永远不会起作用。 LambdaFunction2 永远不会被调用。
function lambdaFunction1(event, context) {
callLambdaFunction2();
context.done(null);
}
但到目前为止,在 LambdaFunction1 退出之前添加一个小延迟确实有效:
function lambdaFunction1(event, context) {
callLambdaFunction2();
setTimeout(
function() {
context.done(null);
}, 500
);
}
让我担心的是,等待 500 毫秒是一个相当任意的神奇数字。有没有人遇到过类似的问题并找到了更有原则的解决方案?
callLambdaFunction2()
之前可能没有完成context.done(null)
导致处理程序退出。
要解决此问题,您需要致电context.done
作为回调。例如:
lambda.invoke({
FunctionName: "functionName",
InvocationType: 'Event',
Payload: JSON.stringify(event)
}, function(err, data) {
if (err) return context.done(err, null);
return context.done(null, data);
});
如果这不是解决方案,您能否展示您是如何实施的callLambdaFunction2
?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)