1.請求攔截器:
請求攔截器的作用是在請求發送前進行一些操作:
// 后添加的攔截器,先執行!!! // 添加請求攔截器(回調函數) axios.interceptors.request.use( config=>{ console.log('request interceptor 請求攔截器1'); return config // return是為了繼續向下傳遞, promise鏈式傳遞 }, error=>{ console.log('request error, 請求攔截器失敗1'); return Promise.reject(error)// return Promise 是為了把錯誤繼續向下傳遞 }) // 攔截器2先執行 axios.interceptors.request.use( config=>{ console.log('request interceptor 請求攔截器2'); return config }, error=>{ console.log('request error, 請求攔截器失敗2'); return Promise.reject(error) })
2.響應攔截器:
響應攔截器的作用是在接收到響應后進行一些操作:
// 添加響應攔截器 axios.interceptors.response.use( response =>{ console.log('response intercept 響應攔截器1'); return response }, function(error){ console.log('response intercept 響應攔截器失敗1'); return Promise.reject(error) } ) axios.interceptors.response.use( response =>{ console.log('response intercept 響應攔截器2'); return response }, error=>{ console.log('response intercept 響應攔截器失敗2'); return Promise.reject(error) } )
請求攔截和響應攔截, 要攔截的請求地址:
axios.get('http:localhost:3000/posts') .then(response=>{ console.log('data',response.data); }) .catch(error=>{ console.log('error',error.message); })
3.取消請求
可以使用取消令牌取消請求
let cancel // 用於保存取消請求的函數 function getProducts() { axios.get('http://localhost:3000/posts',{ cancelToken: new axios.CancelToken((c)=>{// c是用於取消當前請求的函數 // 保存取消函數, 用於之后可能需要取消當前請求 cancel = c }) }).then(response=>{ cancel = null console.log('請求成功了',response.data); },error=>{ cancel = null console.log('請求失敗了',error.message); }) } function cancelReq(){ // 取消請求函數 if(typeof cancel === 'function'){ // 如果typeof是個請求函數,才可以取消 cancel('強制取消請求') }else{ console.log('沒有可取消的請求'); } }