Axios 拦截器 取消请求
axios 最常用的功能之一,拦截器
axios.interceptors.response.use( response => { let {data: json} = response let resp = json if(resp.code === 200) return resp; throw new Error(resp.msg) }, error => { return Promise.reject(error) } }, )
在后台返回数据后,检测状态码为 200 ,则返回数据,否则,抛出异常
另外一个功能,取消请求,以下来自官方
var CancelToken = axios.CancelToken; var source = CancelToken.source(); axios.get('/user/12345', { cancelToken:source.token }).catch(function(thrown){ if(axios.isCancel(thrown)){ console.log('Rquest canceled', thrown.message); }else{ //handle error } }); //取消请求(信息参数设可设置的) source.cancel("操作被用户取消");
或者给 CancelToken
构造函数传递一个executor function来创建一个cancel token
var CancelToken = axios.CancelToken; var cancel; axios.get('/user/12345', { cancelToken: new CancelToken(function executor(c){ //这个executor 函数接受一个cancel function作为参数 cancel = c; }) }); //取消请求 cancel();
//多数情况,我们封装的方法都是通过 export 输出,
//所以 cancel 我们也可以通过 export 输出,这样就可以在主业务中随时调用
export { cancel }