dispatchRequest
promis = dispatchRequest(newConfig)
dispatchRequest
function dispatchRequest(config){
throwIfCancellationRequested(config)
config.headers = config.headers || {}
config.data = transfromData.call(config,config.data,config.headers,config.transformRequest)
config.headers = utils.merge(config.headers.common || {},config.headers[config.method] || {},config.headers)
utils.forEach(['delete','get','head','post','put','patch','common'],(method) => {
delete config.headers[method]
})
var adapter = config.adapter || defaults.adapter
return adapter(config).then((response) => {
throwIfCancellationRequested(config)
response.data = transformData.call(config,response.data,response.headers,config.transformResponse)
},(reason) => {
if(!isCancel(reason)){
throwIfCancellationRequested(config)
if(reason&& reason.respobse){
reason.response.data = transfromData.call(config,reason.response.data,reason.response.headers,config.transfromResponse)
}
}
return Promise.reject(reason)
})
}
throwIfCancellationRequested
function throwIfCancellationRequested(config){
if(config.cancelToken){
config.cancelToken.throwIfRequested()
}
}
transformData
function transformData(data,headers,fns){
var context = this || defaults
utils.forEach(fns,(fn) => {
data = fn.call(context,data,headers)
})
return data
}
Cancel
axios.Cancel = require('./cancel/Cancel')
axios.CancelToken = require('./cancel/CancelToken')
axios.isCancel = require('./cancel/isCancel')
Cancel
function Cancel(message){
this.message = message
}
Cancel.prototype.toString = function (){
return 'Cancel' + (this.message ? ':' + this.message : '')
}
Cancel.prototype.__CANCEL__ = true
CancelToken
function CancelToken(executor){
if(typeof executor !== 'function'){
throw new Error('executor must be a function')
}
var resolvePromise
this.promise = new Promise((resolve)=>{
resolvePromise = resolve
})
var token = this
executor(function(message){
if(token.reason){
return
}
token.reason = new Cancel(message)
resolvePromise(token.reason)
})
}
CancelToken.prototype.throwIfRequested = function(){
if(this.reason){
throw this.reason
}
}
CancelTokem.source = function(){
var cancel
var token = new CancelToken(function executor(c){
cancel = c
})
return {token,cancel}
}
isCancel
function isCancel(value){
return !!(value && value.__CANCEL__)
}