zzq-aop
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.1 • Public • Published

    aop

    javascript aop面向切面编程,完成顺序链式调用

    快速使用

    安装

    npm i zzq-aop

    使用

    function targetFn() {
      console.log('wait 2s...');
      return new Promise((resolve) => {
        setTimeout(() => {
          console.log(2);
          resolve(2);
        }, 2000);
      });
    }
    
    const beforeCtx = {
      data: 1,
      beforeFn() {
        console.log('wait 1s...');
        return new Promise((resolve) => {
          setTimeout(() => {
            console.log(this.data);
            resolve(this.data);
          }, 1000);
        });
      }
    }
    
    const afterCtx = {
      data: 3,
        afterFn(time) {
        console.log(`wait ${time}ms...`);
        return new Promise((resolve) => {
          setTimeout(() => {
            console.log(this.data);
            resolve(this.data);
          }, time);
        });
      }
    }
    
    function moreAfterFn() {
      console.log('Finished');
    }
    
    const AOP = require('zzq-aop').default;
    async function test() {
      // 链式调用
      const aopIns = AOP.create(targetFn)
        .before(beforeCtx.beforeFn, beforeCtx)
        .after(() => afterCtx.afterFn(1000), afterCtx);
    
      aopIns.after(moreAfterFn);
    
      const runRet = await aopIns.run();
    
      console.log('返回值列表:', runRet);
    }
    
    test();

    API

    create(targetFn?: Function, ctx?: Object): AOP

    创建aop实例,第一个参数为执行函数,第二个参数为执行上下文对象,均可选,执行上下文不传则默认为global

    before(beforeFn: Function, ctx?: Object): this

    在调用链前插入函数,返回this用于链式调用

    第一个参数为执行函数,必传

    第二个参数为执行上下文对象,可选,执行上下文不传则默认为create获取的执行上下文

    after(afterFn: Function, ctx?: Object): this

    在调用链后插入函数,返回this用于链式调用

    第一个参数为执行函数,必传

    第二个参数为执行上下文对象,可选,执行上下文不传则默认为create获取的执行上下文

    run(): Promise<any[]>

    执行整个调用链,返回Promise,将resolve调用链每个函数的返回值组成的数组,无法在run函数后面继续链式调用。

    Install

    npm i zzq-aop

    DownloadsWeekly Downloads

    6

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    10.2 kB

    Total Files

    6

    Last publish

    Collaborators

    • zzq210218