Axios interceptor 这段 ForEach 函数有什么用?

如下,参数是函数类型的 fn,当条件成立时执行 fn(interceptor),函数是什么功能 ?

interface ResolvedFn<T> {
    (val: T): T | Promise<T>
}

interface RejectedFn {
    (error: any): any
}

interface Interceptor<T> {
    resolved: ResolvedFn<T>
    rejected?: RejectedFn
}

export default class InterceptorManager<T> {
  private interceptors: Array<Interceptor<T> | null>

  constructor() {
      this.interceptors = []
  }

  use(resolved: ResolvedFn<T>, rejected?: RejectedFn): number {
      this.interceptors.push({
          resolved,
          rejected
      })
      return this.interceptors.length - 1
  }
  // 问题代码块
  forEach(fn: (interceptor: Interceptor<T>) => void): void {
      this.interceptors.forEach(interceptor => {
          if (interceptor !== null) {
              fn(interceptor)
          }
      })
  }

  eject(id: number): void {
      if (this.interceptors[id]) {
          this.interceptors[id] = null
      }
  }
}
阅读 1.5k
1 个回答

队列,拦截器可以多处调用,每个都会入栈,然后当有ajax请求时调用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进