AWS Lambda - NodeJS - 嵌套等待/异步不返回

AWS Lambda - NodeJS - nested Await / Async not returning

有这个小的 Lambda 函数:

module.exports.handler = async( data , ctx, cb) => {
 console.log("start");
 createSth();
};


async function resolveAfter2Seconds(x) {
  console.log("in function: " + x);
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function createSth() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}

我会输出以下输出

start
in function: 10
10

但我只得到

start
in function: 10

因此var x = await resolveAfter2Seconds(10);之后的所有内容都不会执行。

它在 aws lambda 之外以类似的设置工作。

谢谢。

调用createSth函数时添加await关键字。这将允许 main 函数等待函数的执行,而不会 return

module.exports.handler = async( data , ctx, cb) => {
    console.log("start");
    await createSth();
};