Skip to content
On this page

地址:Axios/dispatchRequest.js

dispatchRequest方法是Axios库中发送请求的核心函数。该函数主要完成以下功能:

  1. 初始化请求参数:将请求参数进行格式化,并调用transformRequest函数对请求参数进行转换。
  2. 发送请求:通过XMLHttpRequest对象或者fetch API发送请求,并返回一个Promise对象。
  3. 处理响应:如果请求成功,将响应数据进行格式化,并调用transformResponse函数对响应数据进行转换,最后返回转换后的响应数据。如果请求失败,将返回一个带有错误信息的rejected状态的Promise对象。

下面是dispatchRequest方法的详细代码注释:

js
function dispatchRequest(config) {
    // 初始化请求参数,包括URL、headers、请求体等
    throwIfCancellationRequested(config);
    processConfig(config);
    // 支持请求拦截器,通过Promise链式调用请求拦截器
    return transformData(config)
      .then(function (data) {
        // 使用config.baseURL和config.url合并出完整的请求地址
        config.data = data;
        var adapter = config.adapter || defaults.adapter;
        // 使用适配器发送请求,返回一个Promise对象
        return adapter(config);
      })
      .then(function (response) {
        // 支持响应拦截器,通过Promise链式调用响应拦截器
        throwIfCancellationRequested(config);
        // 格式化响应数据
        response.data = transformData(
          response.data,
          response.headers,
          config.transformResponse
        );
        // 返回转换后的响应数据
        return response;
      })
      .catch(function (e) {
        // 如果请求被取消,则抛出一个Cancellation异常
        if (isCancel(e)) {
          throw e;
        }
        // 格式化请求错误信息
        throw transformError(e, config, null, null, null);
      });
  }

可以看到,dispatchRequest方法涉及的功能较为复杂,涉及到了请求参数的初始化、发送请求、响应处理等多个方面,是Axios库中最核心的一个方法。

Released under the MIT License.