@xuanmo/v-form
Version:
* 目前已经集成的组件(Address/Checkbox/DatePicker/Input/Radio/Select/Text/Switch/Upload) * 组件不满足的情况可自定义开发组件或者使用 `slot` 的形式 * 组件的调用方式采取 `JSON` 配置的形式,具体参数见model数据说明 * 校验规则已经集成 `VeeValidate` 插件,也可以自定义扩展规则,更多资料 [https://logaretm.github.io/vee-validate](https://logaretm
47 lines (37 loc) • 953 B
JavaScript
export default function request({
url = '',
method = 'GET',
headers = {},
dataType = 'text',
data = {},
timeout = 30000,
progress
}) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()
xhr.upload.addEventListener('progress', e => {
typeof progress === 'function' && progress(e.loaded, e.total)
}, false)
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(xhr.response)
} else {
reject(xhr)
}
}
}
// eslint-disable-next-line prefer-promise-reject-errors
xhr.ontimeout = () => reject({
message: '请求超时'
})
xhr.onerror = e => reject(e)
xhr.open(method, url)
for (const [key, val] of Object.entries(headers)) {
xhr.setRequestHeader(key, val)
}
xhr.responseType = dataType
xhr.timeout = timeout
xhr.send(data)
})
}