lambda函数如何执行后台计时器?

时间:2019-05-31 06:54:26

标签: node.js aws-lambda

将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);
    });
}

1 个答案:

答案 0 :(得分:0)

计时器启动正常,但是Lambda在解析之前完成了执行-忽略未包装在返回的Promise中的所有内容。

在第二种情况下,返回了Promise,并且由于整个处理程序函数都声明为async,该函数将其结果始终打包到Promise中,因此返回的Promise结果被展平并正确返回。

相关问题