@antv/async-hook
TypeScript icon, indicating that this package has built-in type declarations

2.2.9 • Public • Published

async-hook

L7 数据流管理工具

Usage

const asyncHook = require('async-hook');

hooks

async-hook 提供了一系列的 hook 方法用于控制方法的调用

SyncHook

SyncHook 支持对一组方法的顺序调用,同时 call 方法传入的参数会传递个方法组的每个方法使用

const hook = new SyncHook();
const funcList = [
    (args) => {
        console.log(`step1 - ${args}`);
    },
    (args) =>{
        console.log(`step2 - ${args}`);
    },
    (args) =>{
        console.log(`step3 - ${args}`);
    },
];
hook.tap('test', funcList);
hook.call('call');
// step1 - call, step2 - call, step3 - call

SyncBailHook

使用方法类似 SyncHook,但是不支持 call 传值

SyncWaterfallHook

SyncWaterfallHook 支持对一组方法的顺序调用,正常情况下方法组会在执行 call 方法之后全部执行,但可以通过每个函数的返回值控制提前结束

const hook = new SyncHook();
const funcList = [
    () => { // 执行第一个函数
        console.log('step1');
        return true;
    },
    () =>{ // 上一个函数返回值为 true,继续往下执行
        // do something
        console.log('step2');
        return false
    },
    () =>{ // 上一个函数返回值为 false(void、null、undefined、0),不再往下执行
        // do something
        console.log('step3');
        return true
    },
];
hook.tap('test', funcList);
hook.call('call');
// step1, step2

AsyncSeriesHook

使用类似 SyncHook,不过方法组中都是异步方法

AsyncSeriesBailHook

使用类似 AsyncSeriesHook,但是不支持 call 传值

AsyncWaterfallHook

AsyncWaterfallHook 支持对一组异步方法的顺序调用,正常情况下方法组会在执行 call 方法之后全部执行,但可以通过每个函数的返回值控制提前结束

const hook = new AsyncWaterfallHook();
const funcList = [
    () => { // 执行第一个函数
        console.log('step1');
        return new Promise((resolve) => setTimeout(() => resolve(true), 100))
    },
    async () =>{ // 上一个函数返回值为 true,继续往下执行
        // do something
        console.log('step2');
        return true
    },
    async () =>{ // 上一个函数返回值为 true,继续往下执行
        // do something
        console.log('step3');
        return false
    },
    async () =>{ // 上一个函数返回值为 false(void、null、undefined、0),不再往下执行
        // do something
        console.log('step4');
        return true
    },
];
hook.tapPromise('test', funcList);
hook.promise();
// step1, step2, step3

AsyncParallelHook

控制一组异步方法的并行调用,类似 Promise.all

Readme

Keywords

none

Package Sidebar

Install

npm i @antv/async-hook

Weekly Downloads

31,950

Version

2.2.9

License

ISC

Unpacked Size

292 kB

Total Files

16

Last publish

Collaborators

  • lvisei
  • yisi.wang
  • basketduck
  • biupiubiupiu
  • flash1
  • dreammy23
  • laixingui.lxg
  • zhangjunjie-loki
  • rainy25ghz
  • zeyuwang
  • yanxiong
  • susiwen8
  • freestyle21
  • soundquiet
  • elaine.q.10
  • sturuby
  • sakuya223
  • serializedowen
  • xdzhao
  • yangzhanmei
  • wjgogogo
  • leungwensen
  • dori
  • iaaron
  • yard
  • simaq
  • dxq613
  • intchous
  • susan_ann
  • jinke.li
  • lzxue
  • army8735
  • atool
  • baizn
  • dengfuping
  • neoddish
  • jeffy2012
  • zqlu
  • afc163
  • pomelo-nwu
  • kopiluwaky
  • ccnuzindex
  • panyuqi
  • bubkoo
  • zengyue
  • kasmine
  • boyu.zlj
  • l1ud0ngq1
  • newbyvector
  • winniexing
  • chenluli
  • kn9117
  • xdddst
  • semious2020
  • esora
  • nadia_liu
  • bbsqq
  • mxz96102
  • openwayne
  • pearmini
  • pddpd
  • yiqianyao
  • zhanba
  • cxxxxxn