如何使用自定义Axios实例取消令牌?

时间:2020-06-11 20:23:52

标签: javascript reactjs async-await axios

我有一个使用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实例。

1 个答案:

答案 0 :(得分:0)

弄清楚拦截器中存在一个问题。只需确保在使用错误对象执行任何操作之前,先使用Axios.isCancel()检查其取消错误是否存在。