You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
872 B
30 lines
872 B
export default function adapter(config, Request) {
|
|
return new Promise((resolve, reject) => {
|
|
// 判断是否被取消请求
|
|
if (Request.aborted) {
|
|
return reject({
|
|
config,
|
|
errMsg: 'request:fail abort'
|
|
})
|
|
}
|
|
|
|
// 发起请求,并挂载 RequestTask
|
|
Request.task = uni.request({
|
|
...config,
|
|
complete: result => {
|
|
// 根据状态码判断要执行的触发的状态
|
|
const response = { config, ...result }
|
|
!config.validateStatus || config.validateStatus(result.statusCode)
|
|
? resolve(response)
|
|
: reject(response)
|
|
}
|
|
})
|
|
|
|
// 请求类内部判断是否执行监听 HTTP Response Header 事件
|
|
Request.onHeadersReceived()
|
|
Request.offHeadersReceived()
|
|
|
|
// 根据配置的 xhr 属性执行获取 RequestTask
|
|
config.xhr?.(Request.task, config)
|
|
})
|
|
}
|
|
|