你有一个错字:
context.callbackWaitsForEmtpyEventLoop = false;
应该:
context.callbackWaitsForEmptyEventLoop = false;
以下是有关callbackWaitsForEmptyEventLoop行为的文档说明:
callbackWaitsForEmptyEventLoop
默认值为
true
.此属性仅用于修改回调的默认行为.默认情况下,回调将等到Node.js运行时事件循环为空,然后冻结进程并将结果返回给调用者.您可以将此属性设置为false,以便在调用回调后立即请求AWS Lambda冻结进程,即使事件循环中存在事件也是如此.AWS Lambda将冻结进程,任何状态数据和Node.js事件循环中的事件(当下一次调用Lambda函数并且AWS Lambda选择使用冻结进程时,处理事件循环中的任何剩余事件).有关回调的更多信息,请参阅使用回调参数.
最小的例子:
// Times out due to typo exports.function1 = (event, context, callback) => { setInterval(() => console.log('Long wait'), 100000); context.callbackWaitsForEmtpyEventLoop = false; callback(null, 'Hello from Lambda'); }; // Returns successfully exports.function2 = (event, context, callback) => { setInterval(() => console.log('Long wait'), 100000); context.callbackWaitsForEmptyEventLoop = false; callback(null, 'Hello from Lambda'); };