一些旧项目没有透过全局方法,每个请求都是独立的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查看

By 雪峰

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注