Node.js 使用Promise.all()时,AWS Lambda返回502
端点在每个条件下都返回502。我认为我的响应结构正确,但我仍然从端点得到502个坏网关错误 当我没有处理Promise.all()时,响应是有效的 这个函数的超时时间是30秒,顺便说一句,但不会花那么长时间 我有一个这样的处理程序:Node.js 使用Promise.all()时,AWS Lambda返回502,node.js,amazon-web-services,rest,aws-lambda,serverless,Node.js,Amazon Web Services,Rest,Aws Lambda,Serverless,端点在每个条件下都返回502。我认为我的响应结构正确,但我仍然从端点得到502个坏网关错误 当我没有处理Promise.all()时,响应是有效的 这个函数的超时时间是30秒,顺便说一句,但不会花那么长时间 我有一个这样的处理程序: module.exports.handler= async function (event, context, callback) { await Promise.all([promise1(), promise2()]) .then((value) =
module.exports.handler= async function (event, context, callback) {
await Promise.all([promise1(), promise2()])
.then((value) => {
promise3(value[0], value[1])
.then(() => {
const response = {
statusCode: 200,
body: JSON.stringify({
message: "Successful",
}),
};
callback(null, response);
})
.catch((err) => {
const response = {
statusCode: 401,
body: JSON.stringify({
message: err,
}),
};
callback(null, response);
});
})
.catch((err) => {
const response = {
statusCode: 500,
body: JSON.stringify({
message: err,
}),
};
callback(null, response);
});
};
从API网关测试中得到的错误:
Sat Dec 05 09:24:08 UTC 2020 : Endpoint response body before transformations: null
Sat Dec 05 09:24:08 UTC 2020 : Execution failed due to configuration error: Malformed Lambda proxy
response
Sat Dec 05 09:24:08 UTC 2020 : Method completed with status: 502
你应该坚持使用
等待
或。然后
,而不是同时使用这两种方法
由于您的处理程序已经是async
,因此您最好使用wait
我修改了下面的代码,使其不再使用。然后(未测试)
你应该坚持使用等待
或。然后
,而不是同时使用这两种方法
由于您的处理程序已经是async
,因此您最好使用wait
我修改了下面的代码,使其不再使用。然后(未测试)
它起作用了,非常感谢。但在您的代码中,您忘记在200状态代码中添加“callback(null,response)”。很高兴它能工作。谢谢,我已经编辑了callbackIn offline Deployment函数,它在2.5秒内返回,但在联机状态下超时(30秒)。你知道为什么会发生这种情况吗?确定,添加“context.callbackaitsforeptyeventloop=false;”修复了问题。它正在工作,非常感谢。但在您的代码中,您忘记在200状态代码中添加“callback(null,response)”。很高兴它能工作。谢谢,我用callback编辑了离线部署函数,它在2.5秒内返回,但在在线部署中超时(30秒),你知道为什么会发生这种情况吗?确定添加“context.callbackaitsforeptyeventloop=false;”修复了问题。
module.exports.handler= async function (event, context, callback) {
try
{
var values = await Promise.all([promise1(), promise2()]);
try
{
await promise3(values[0], values[1]);
const response = {
statusCode: 200,
body: JSON.stringify({
message: "Successful",
})
};
callback(null, response);
}
catch(err)
{
const response = {
statusCode: 401,
body: JSON.stringify({
message: err,
})
};
callback(null, response);
}
}
catch(err)
{
const response = {
statusCode: 500,
body: JSON.stringify({
message: err,
})
};
callback(null, response);
}
}