上一节讲到,用户定义的拦截器interceptors会首先对请求做拦截处理,然后用dispatchRequest模块发送请求,接下来对响应继续应用用户为响应注册的拦截器做处理,本节就来看看dispatchRequest方法如何发送请求

dispatchRequest首先在用户配置了cancelToken选项时,尝试去取消请求(在axios的请求配置中,cancelToken选项用来指定用来取消请求的cancel token,可以使用Axios内部模块CancelToken的CancelToken.source这个工厂方法生成,也可以自己new一个CancelToken,具体参考Axios官方文档)

接下来,处理下config的url,headers,data等数据的格式,其中对于请求头中的数据做了扁平化处理,这样的话,就可以删去之前定义在config.headers上的各种method了

最后,调用我们第三节讲到的adapter发送请求,请求成功后返回数据,如果请求失败则返回错误信息。到此,Axios发送请求的全过程讲述完毕。
本系列已经将axios源码绝大部分内容做了阐述,内部的一些工具性,辅助性模块没有做过多阐述,不过可以通过函数名就基本可以知道它们做的事情。现在是不是已经清楚了axios调用request或者get,post等方法时,具体的执行流程了呢(tips: request(get,post,put,delete...) -> requestInterceptors -> dispatchRequest -> responseInterceptors)?