将setTimeout包装在Promise中时,该代码将在aws lamda中执行,但不会执行常规的setTimeout函数。在AWS lamda执行环境中如何处理Node.js事件循环?
exports.handler = async (event) => {
setTimeout(function() {
// This part not executed
}, 1*1000);
return new Promise((resolve)=>{
setTimeout(function() {
// This part executed
resolve('works');
}, 3*1000);
});
}
答案 0 :(得分:0)
计时器启动正常,但是Lambda在解析之前完成了执行-忽略未包装在返回的Promise中的所有内容。
在第二种情况下,返回了Promise,并且由于整个处理程序函数都声明为async
,该函数将其结果始终打包到Promise中,因此返回的Promise结果被展平并正确返回。