钩子种类
基础钩子(BasicHook)
执行每一个,不关心函数的返回值,有 SyncHook、AsyncParallelHook、AsyncSeriesHook
安全钩子 (BailHook)
顺序执行 Hook,遇到第一个结果 result !== undefined 则返回,不再继续执行。有: SyncBailHook、AsyncSeriseBailHook, AsyncParallelBailHook
流水线钩子 (WaterfallHook)
如果前一个 Hook 函数的结果 result !== undefined,则 result 会作为后一个 Hook 函数的第一个参数。既然是顺序执行,那么就只有 Sync 和 AsyncSeries 类中提供这个 Hook:SyncWaterfallHook,AsyncSeriesWaterfallHook
循环钩子 (Loophook)
不停的循环执行 Hook,直到所有函数结果 result === undefined。同样的,由于对串行性有依赖,所以只有 SyncLoopHook 和 AsyncSeriseLoopHook
示例
javascript
const {
SyncHook
} = require('tapable')
// 创建一个同步 Hook,指定参数
const hook = new SyncHook(['arg1', 'arg2'])
// 注册
hook.tap('a', function (arg1, arg2) {
console.log('a')
})
hook.tap('b', function (arg1, arg2) {
console.log('b')
})
hook.call(1, 2)