gpt4 book ai didi

javascript - Lambda 函数从不工作的函数返回 promise

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:20 29 4
gpt4 key购买 nike

我正在使用 Node js 开发 lambda 函数。我调用一个返回 promise 的函数,然后我调用一个promiseAll。我的第一个函数根据 ID 获取行表单数据库,如果行不存在,我想返回错误响应,如果存在,则应调用 PromiseAll。

以下是我的代码:

return getDetailsOfRow(id).then(function() {
return Promise.all([
getDetailsOfA(query1),
getDetailsOfB(query2),
getDetailsOfC(tripLocationsQuery)
]).then(function(values) {
return combineResults();
})
});

function getDetailsOfRow(trip) {
return new Promise((resolve, reject) => {
con.query(query, id, (err, results, fields) => {
if (err) {
reject(err);
}
if (results.length < 1) {
createErrorResponse();
} else {
//get the set column values to use for other function
}
});
});
}

function createErrorResponse() {
return new Promise((resolve, reject) => {
var response = {
"isBase64Encoded": false,
"statusCode": 404,
"headers": {
"Content-Type": "text/html"
},
"body": "Invalid Key"
};
resolve(response);
});
}

createErrorResponse 方法内的 Promise 不会被 lambda 函数调用。我没有从 lambda 函数得到任何响应。我没有找到任何解决方案。是因为如果从 getDetailsOfRow() 调用 createErrorResponse() ,我会在 promise 中返回一个 promise 吗?

最佳答案

您不需要将 createErrorResponse 函数包装在 Promise 中。

在resolve或reject中添加createErrorResponse(),并在getDetailsOfRow中添加catch block 来捕获错误。

试试这个


return getDetailsOfRow(id).then(function() {
return Promise.all([
getDetailsOfA(query1),
getDetailsOfB(query2),
getDetailsOfC(tripLocationsQuery)
]).then(function(values) {
return combineResults();
}).catch( error => {
return error;
});
});

function getDetailsOfRow(trip) {
return new Promise((resolve, reject) => {
con.query(query, id, (err, results, fields) => {
if (err) {
reject(err);
}
if (results.length < 1) {
reject(createErrorResponse());
} else {
//get the set column values to use for other function
}
});
});
}

function createErrorResponse() {
return {
isBase64Encoded: false,
statusCode: 404,
headers: {
"Content-Type": "text/html"
},
body: "Invalid Key"
};
}

关于javascript - Lambda 函数从不工作的函数返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60203884/

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