0.0.3 • Published 4 years ago

js-interceptor-lite v0.0.3

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

js 实现拦截器功能

使用方法

推荐使用 es6+的继承方式,包含三部分,before, after, handle

模块使用说明
handle子类中定义具体的业务方法
before实例化以后添加执行 handle 的前置操作,通常用来修改和拦截 handle 的参数
after实例化以后添加执行 handle 的后置操作,通常用来修改和拦截 handle 的返回值
invoke使用 instance.invoke(params)调用
import Interceptor from "js-interceptor-lite";
class Demo extends Interceptor {
  // handle函数是被拦截的业务函数
  handle(data) {
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve(100); // 模拟业务返回
      }, 1000);
    });
  }
}
const instance = new Demo();
/**
 *  instance.interceptors.before 在handle之前执行
 *  instance.interceptors.after 在handle之后执行
 *  拦截请求参数,接受两个函数参数
 *    第一个函数参数为前置promise resolve执行
 *    第二个函数参数为前置promise reject执行
 *    其中resolved的参数,为前置阶段的返回值
 * instance.interceptors.before.add(resolved, rejected);
 * instance.interceptors.after.add(resolved, rejected);
 */
instance.interceptors.before.add((params) => {
  console.log(params);
  params++;
  return params;
});
// 如果是异步操作,支持返回promise对象
instance.interceptors.before.add((params) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      params++;
      resolve(params);
    });
  });
});
instance.interceptors.after.add((result) => {
  console.log(params);
  params++;
  return params;
});
/**
 * 使用invoke执行handle函数
 */

instance.invoke(111);
0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago