拦截器管理类: forEach 接口就是遍历 interceptors
来源:8-3 -3 拦截器的设计与实现 - 链式调用实现

刘津馨
2020-01-13
您好,老师
forEach(fn: (interceptor: Interceptor) => void): void {
this.interceptors.forEach(interceptor => {
if (interceptor !== null) {
fn(interceptor)
}
})
}
请问此段代码,什么时候被执行? fn 是一个匿名function 函数? 能细致讲一下,此处调用没太看懂。
写回答
1回答
-
首先你创建拦截器是通过 use 方法,比如:
use 方法定义如下:
其实就是把定义的拦截器添加到 this.interceptors 这个数组中。
然后在发送请求的时候,就会从调用这个 forEach 方法了,传入的参数 fn 就是这个箭头函数。
再看这个 forEach 函数,实际上很简单,内部遍历 this.interceptors,然后执行 fn
在我们这个例子中 fn 就是上面的箭头函数,实际上就是把 interceptor 添加到 chain 中。20
相似问题