【发布时间】:2020-03-31 01:33:55
【问题描述】:
我已将所有 API 调用集中在一个唯一的文件 API.js 中,如下所示:
API.js
Class APIContextProvider extends Component {
async apiCallTest() {
var url = random_url
const options = {
url: url,
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;',
},
};
return await axios(options)
.then(response => {
if (response.status === 200) {
return response.data
}
}).catch(error => {
console.log(error.response.status)
}
);;
}
然后我从另一个组件调用我的 API:
OutsideClass.js
async componentDidMount() {
this.context.apiCallTest().then(data => {
// How can I prevent this then() to run when catch() happens?
});
}
一切完成的顺序是:then().catch().then()。
我想要的是防止最后一个 then()。如果捕获到特定错误(如 401),则不会发生,因为我想要全局错误处理。
四处寻找,但找不到解决方案......
谢谢!
【问题讨论】:
-
你不能有全局错误处理,每个promise链都需要单独处理。
-
为了防止
then回调执行,重新抛出一个错误。