gpt4 book ai didi

node.js - 执行不等待 AWS Lambda 中的 promise 结果

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:33 25 4
gpt4 key购买 nike

我尝试在 AWS Lambda 中使用 Promises,但遇到了一些问题。我正在使用 typescript/nodejs;看下面的代码

export function handler(event: any, context: any, callback: Function){

testFunction().then(data => callback(null, "success from promise"));
callback(null, "success");
}

export function testFunction(){
return new Promise((resolve, reject) => {
setTimeout(() => resolve("data"), 5000);
});
}

当我运行代码时,我得到的是“成功回调”而不是“ promise 成功”。我在这里做错了什么吗?

最佳答案

您实际上调用了两次回调:一次是在第四行 "success" 上,一次是在 promise resolve 之后。我认为 lambda 基本上会忽略第二个回调(实际上是代码中的第一个回调)。

你只能移除另一个调用:

export function handler(event: any, context: any, callback: Function){
testFunction().then(data => callback(null, "success from promise"));
}

注意:只有 Node 4.3 才支持回调。它也是可选的。只有当你想显式地将数据传递回调用者时才需要使用它。否则,一旦事件循环为空,它将自动调用,在这种情况下,将在 promise 解析后发生。

如果您希望 lambda 函数在 callback 被调用时立即结束,而不是等待事件循环结束,您还可以更改 context.callbackWaitsForEmptyEventLoop = false 的设置结束。不过,您很可能不需要这样做。

关于node.js - 执行不等待 AWS Lambda 中的 promise 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41766783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com