axios

  1. 核心设计思想
    1. 拦截器机制:通过 unshift 和 push 形成 Promise 链,请求拦截器后添加的方法先执行,响应拦截器则是先添加的先执行,实现请求/响应拦截器,支持异步操作
    2. 适配器模式:通过适配器抽象不同环境的 HTTP 请求实现
    3. 配置合并:灵活的配置合并策略,支持全局配置和请求级别配置
    4. 取消请求:通过 cancelToken 和 Promise 的取消机制,支持请求取消
    5. 转换器:支持请求/响应数据的转换

心得

  1. 源码里有大量将变量置为 null 的操作,主动清除引用,一方面将无用变量回收掉,有效避免内存泄露,另一方面也让更加代码的严谨,健壮
  2. 可扩展性非常强,我们可以自定义请求拦截器,响应拦截器,来为我们项目服务。
  3. 取消请求的兼容性,早期使用 cancelToken 方式,后期使用 Web 标准的 AbortController,但是新老方案均可以使用
  4. 高度应用 Promise 的链式调用和异步控制
  5. 使用了发布订阅模式管理一些操作

面试问题

  1. Axios 的拦截器是如何实现的? 答案:通过 Promise 链式调用,请求拦截器用 unshift 倒序执行,响应拦截器用 push 正序执行。 关键代码:chain = [...requestInterceptors, dispatchRequest, ...responseInterceptors]。

results matching ""

    No results matching ""