javascript - async 和 await 调用一个 api 来响应,
问题描述
我有一个看起来像这样的功能,
const addItem = async(req, res, next) => {
const itemApi = new Connector({
url: '/item',
method: 'POST',
headers: {},
body: {item: "item name"}
});
try {
const response = await itemApi.call();
if(response.data && response.data.errors) {
return response.data.errors;
} else {
return response.data;
}
} catch(error) {
console.log(error);
}
我像这样调用这个方法,
addItem(req, res, next)
.then((response) => console.log(response))
.catch((error) => console.log(error))
then
即使api返回错误,似乎总是调用并且从不调用catch?难道我做错了什么?
解决方案
您正在使用try/catch bloc
k 但没有从 catch 块中抛出错误,因此.catch
不会执行函数调用,因为异步函数中不存在未处理的错误
您可以抛出错误,它会按您的预期工作
const addItem = async(req, res, next) => {
const itemApi = new Connector({
url: '/item',
method: 'POST',
headers: {},
body: {item: "item name"}
});
try {
const response = await itemApi.call();
if(response.data && response.data.errors) {
return response.data.errors;
} else {
return response.data;
}
} catch(error) {
console.log(error);
throw new Error(error);
}
推荐阅读
- docker - docker compose up 工作正常,但无法访问显示站点的浏览器
- python - 使用inplace = True时如何在控制台上打印?
- javascript - message.guild.channels.find 不是函数
- java - 无法在休眠 Spring Boot 中的单个事务中保存父项和子项
- r - 基于逻辑列对复杂稀疏矩阵进行子集化
- ios - 如果我对搜索结果使用单独的数组,如何更新两个数组中的对象?
- javascript - Slack Bot 与 Bolt for JavaScript 和 OAuth 2.0 与其他工作区共享应用程序
- java - 如何使用spring boot在浏览器的单页中呈现多个文档
- python - 如何根据每行的长度合并excel中的行(一行中有数据的单元格数)
- javascript - 为什么 javascript 不检测在 django for 循环之后添加的元素?