今日来看发送申请的dispatchRequest.
dispatchRequest就是一个函数,承受config做参数,外围是应用adapter(config中的属性)办法发送申请,而后将返回的数据进行转换.因为是promise,所以胜利返回response,失败返回reject谬误
'use strict';var utils = require('./../utils');var transformData = require('./transformData');var isCancel = require('../cancel/isCancel');var defaults = require('../defaults');/** * Throws a `Cancel` if cancellation has been requested. * * 抛出一个Cancel 如果一个cancellation曾经被申请 */function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); }}/** * Dispatch a request to the server using the configured adapter. * * 应用配置的适配器给服务器散发一个申请 * * @param {object} config The config that is to be used for the request 申请的配置 * @returns {Promise} The Promise to be fulfilled 返回实现的Promise */module.exports = function dispatchRequest(config) { throwIfCancellationRequested(config); // Ensure headers exist 确保头部存在 config.headers = config.headers || {}; // Transform request data 转化申请数据 config.data = transformData( config.data, config.headers, config.transformRequest ); // Flatten headers 使头部扁平化 config.headers = utils.merge( config.headers.common || {}, config.headers[config.method] || {}, config.headers ); utils.forEach( ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) { delete config.headers[method]; } ); var adapter = config.adapter || defaults.adapter; return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); // Transform response data response.data = transformData( response.data, response.headers, config.transformResponse ); return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { throwIfCancellationRequested(config); // Transform response data if (reason && reason.response) { reason.response.data = transformData( reason.response.data, reason.response.headers, config.transformResponse ); } } return Promise.reject(reason); });};