通常我们在发送axios请求的时候,可能会有请求拦截或者响应拦截,但是axios请求拦截和响应拦截的执行是不一致的。axios拦截器请求拦截的执行顺序:axios请求拦截会先执行最后指定的回调函数,依次执行forward。响应拦截:axios的响应拦截会先执行最先指定的回调函数,然后依次执行以下代码为例axios.interceptors.request.use(config=>{console.log(`requestinterception1`);返回配置;});axios.interceptors.request.use(config=>{//在发送请求之前做一些事情console.log(`requestintercept2`);returnconfig;});//添加响应拦截器axios.interceptors.response.use(response=>{//对响应数据做一些事情console.log(`successfulresponseinterception1`);returnresponse.data;});//添加响应拦截器axios.interceptors.response.use(response=>{//使用响应数据做一些事情console.log(`SuccessfulResponseIntercept2`);returnresponse;});//发送请求axios.get('/posts').then(response=>{console.log('successful');})上面代码打印结果的顺序是:console.log(requestinterception2);console.log(请求拦截1);console.log(成功响应拦截1);console.log(成功响应拦截2);控制台日志(成功);为什么请求拦截2会在请求拦截1之前执行?因为axios将响应拦截和请求拦截都存储在一个axios开始发送一个数组中的请求时,每次从数组中删除两个回调函数开始执行。当数组为空时,执行完成。axios的请求拦截追加到数组前面,响应拦截追加到数组后面。appended,所以axios发送请求时,最后指定请求拦截的回调函数,先被调用,从左到右依次执行。如下图所示:以上是axios发送的请求拦截和响应拦截的执行过程
