一些旧项目没有透过全局方法,每个请求都是独立的Ajax。若想修改请求工作量会很大,比如需要在每个请求中加入新的鉴权token,并统一做响应处理,这时可以引入ajax-hook.js来轻松处理这种情况
Ajax-Hook.js简介
ajax-hook是用于拦截浏览器 XMLHttpRequest 对象的轻量库,它可以在 XMLHttpRequest 对象发起请求之前、收到响应内容之后以及发生错误时获得处理权,通过它你可以提前对请求、响应以及错误进行一些预处理。Ajax-hook具有很好的兼容性,可以在任何支持ES5的浏览器上运行,因为它并不依赖 ES6 特性。
使用
在引入js后,放以下代码到全局文件中即可
const { unProxy, originXhr } = proxy({
onRequest: (config, handler) => {
handler.next(config);//接着执行原本请求处理
},
onError: (err, handler) => {
handler.next(err);//接着执行原本请求处理
},
onResponse: (response, handler) => {
handler.next(response);//接着执行原本请求处理
}
})
ProxyReturnObject 是一个对象,包含了 unProxy 和 originXhr
- unProxy([window]):取消拦截;取消后 XMLHttpRequest 将不会再被代理,浏览器原生XMLHttpRequest会恢复到全局变量空间
- originXhr: 浏览器原生的 XMLHttpRequest
下载
点击这里下载,下载解压后引入项目中即可使用。更多说明及详细特性点击这里到GitHub查看