node.js - 如何在 AWS Lambda 处理程序触发之前运行异步函数

标签 node.js aws-lambda

如何在 AWS Lambda 处理程序之外运行异步函数并在处理程序函数中使用其输出?我需要在处理函数运行之前异步初始化各种数据库连接。这样,事件的数据库连接就可以在容器重用时继续存在。

例子:

var i = 'immediate start';
setTimeout(function(){
  i = 'delayed start';
}, 5000);
module.exports.handler = function (event, context, callback) {
  console.log(i); 
  //outputs `immediate start` whereas I need to have  i = `delayed start` here.
}

最佳答案

您必须创建一个 promise ,然后在 setTimeout() 中的回调函数被触发时解析该 promise 。像这样:

module.exports.handler = function (event, context, callback) {
    var i = 'immediate start'; 
    return new Promise((resolve, reject) => {
         setTimeout(() => { 
             i = 'delayed start'; 
             resolve()
         })
     })
     .then(()=>console.log(i))
}

关于node.js - 如何在 AWS Lambda 处理程序触发之前运行异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823542/

相关文章:

amazon-web-services - 异步调用 AWS Lambda 不会产生任何日志

javascript - 从具有零个或 1 个条目的 Map 获取值?

javascript - Sequelize - 如何包含自定义列详细信息

javascript - 从javascript中的数组中删除对象

javascript - 在 AWS Lambda 中使用 NodeJS 将 Woocommerce API 函数更改为异步/等待

node.js - 如何调试 aws lambda 函数?

javascript - 在react-native中加载launchChrome.js时出现语法错误

node.js - 找不到 NPM -bash 命令

amazon-web-services - AWS 服务限制

node.js - 如何解决 AWS Lambda 中的 Runtime.HandlerNotFound 错误