我有一个使用axios.create()的自定义Axios实例。我想使用Axios的取消功能,但是从自定义实例触发的请求永远不会被取消。在.isCancel()方法中不会检测到它。但是,与全局Axios对象一起使用时,它可以很好地工作。
const axiosAuth = axios.create();
const cancelToken = axios.CancelToken.source();
//request
const getProducts = async () => {
try {
const response = await axiosAuth.get('api', {
cancelToken: cancelToken.token
});
if (response.status === 200) {
return response.data;
}
} catch (err) {
if (axios.isCancel(err)) {
console.log('Error: ', err.message);
return true;
} else {
throw new Error(err);
}
}
};
// I'm cancelling the request on button click using `cancelToken.cancel()`
我不明白为什么取消不适用于自定义Axios实例。
答案 0 :(得分:0)
弄清楚拦截器中存在一个问题。只需确保在使用错误对象执行任何操作之前,先使用Axios.isCancel()
检查其取消错误是否存在。