【发布时间】:2020-06-21 07:39:28
【问题描述】:
我有一个从 AWS Lambda 内部调用其他 AWS Lambda 的承诺列表:
promiseArray.push(lambda.invoke(params).promise())
在另一个函数中,我遍历这些承诺并尝试解决它们:
for (let i = 0; i < promiseArray.length; i++) {
try {
let result = await promiseArray[i];
console.log("Success!");
} catch (e) {
console.log("Failed!");
}
}
这是我面临的问题。通常,调用会抛出一个 TimeoutError,它不会被 try-catch 块捕获,并通过抛出“未处理的 Promise Rejection”错误来终止 Lambda 执行。 请注意,这仅在我们在 Lambda 上从 Node 8.10 升级到 12.x 后才开始出现。
【问题讨论】:
-
您尝试过使用
Promise.all()吗? -
为什么不使用 Promise.all 解决所有问题?
-
我想分别解决每个承诺。如果一个承诺被拒绝,我仍然想处理其他承诺。
-
你能提供解析这些承诺的异步函数吗?
-
这个 lambda 的超时时间是多少?是默认3秒吗?
标签: node.js asynchronous promise aws-lambda