axios 关于请求前后的改变状态或操作

2019-05-08  本文已影响0人  IceCover

第一种

实现 promise的finally方法,在finally中改变,可以写的参考promise详解封装一下axios
1.根据promise详解给Promise实现finally方法。
2.封装axios

function myAxios(url, params) {
  return new Promise((resolve, reject) => {
    axios.get(url, params).then(function (response) {
      resolve(response.data)
    }).catch(function (err) {
      reject(err)
    })
  })
}
 
myAxios(url,params).then((data)=>{console.log(data)}).catch(()=>{}).finally(()=>{})

第二种

写成请求公用的状态改变

axios.interceptors.request.use(function (config) {
  console.log(config)
    //Toast.loading({mask: true})
    return config;
});

类似这样,拦截响应 在响应之前就开始操作
支持配置, 不想要loading的接口可以在config加一个参数
在请求的时候这么写

this.axios.post('url',qs.stringify({//参数
}),{test:'testConfig'}//这个对象配置返回的config属性
).then(res=>{

或者

this.axios({
    url: 'url',
    method: 'post',
    data: {},
   test:'testConfig', //这个对象配置返回的config属性
}).then(res=>{

在打印出来的config里面,得到参数,再根据情况判断是否需要loading

image.png
上一篇 下一篇

猜你喜欢

热点阅读