我有一个存储方法...async store() { try { return await axios.post('/upload', data); } catch (error) { } },调用者:store().then(()=>{ console.log('ok'); }, ()=>{ console.log('not ok'); });但是当 store 方法失败并捕获到错误时,then总是调用第一个方法,如何才能not ok调用失败的方法?
1 回答
智慧大石
TA贡献1946条经验 获得超3个赞
您需要在函数块中throw捕获的错误catchstore
async store() {
try {
return await axios.post('/upload', data);
} catch (error) {
throw error;
}
}
您也可以跳过捕获函数中的错误,并在store调用函数时简单地捕获它store。为此,您只需要返回axios.post(...).
async store() {
return axios.post('/upload', data);
}
(注意,没有这个try-catch块,你不需要一个awaitbeforeaxios.post(...)因为store函数返回的 promise 将被解析为返回的 promise axios.post(...)。这意味着如果返回的 promiseaxios.post(...)被履行,store函数返回的 promise 也将履行具有与履行返回的承诺相同的履行价值axios.post(...)。)
将第二个参数传递给then函数是不常见的。相反,您应该链接一个.catch()块来捕获错误。
store()
.then(() => console.log('ok'))
.catch(() => console.log('not ok'));
添加回答
举报
0/150
提交
取消