给定以下函数来更新后端的值:
const updateValues = async (arg1, arg2, arg3) => {
try {
const response = await axios.patch(
...
);
...
return response.data;
} catch (err) {
console.error(err.response);
return {};
}
};
我无法成功对 Promise 函数做出反应,这是我的实现:
const response = updateValues('bar', id, value1, value2, 'foo'
);
response
.then(() => console.log('success:', response))
.catch((err) => console.log('fail:', err));
我得到的是,不管 response
总是解决并且我永远不会发现错误,我做错了什么?
答案 0 :(得分:2)
所以你需要决定你想在哪里捕捉被抛出的错误。目前,您正在捕获 updateValues
函数内部的错误。
如果你想处理 Axios 抛出的错误,你可以这样编写函数:
const updateValues = async (arg1, arg2, arg3) => {
const response = await axios.patch(...); // If Axios throws an error will propagate up to the caller
...
// You could also throw other errors here manually if you'd like
return response.data;
};
然后你可以在调用站点处理错误:
updateValues('bar', id, value1, value2, 'foo')
.then((data) => console.log('success:', data))
.catch((err) => console.log('fail:', err)); // Thrown exception handled here.
如果您想了解更多信息:Here's a good article on JS exceptions & best practices.