该封装的请求 包含 get post put delete cancel(取消请求)完成取消请求
const baseUrl = "http://192.168.1.34:5555";
/**
* @function createXhrRequest
* @param {String} baseUrl 基础url
* @param {Number} timeout 超时时间
* @param {Object} defaultData 默认参数
* @param {Object} head 请求头
* @return {Object}
*/
const createXhrRequest = (
{
head = {},
baseUrl = '',
timeout = 30000,
defaultData = {},
} = {}) => {
const isEmptyObject = (obj) => obj && Object.keys(obj).length === 0 && obj.constructor === Object;
const success = (resolve, res) => {
if (res.code === 200) {
resolve(res);
} else {
utils.msg.error(res.msg);
reject(res);
}
}
const error = (reject, err) => {
if (err.status === 0) return;
utils.msg.error(err.msg || '请求失败');
reject(err);
}
const paramsToFormData = (obj) => {
const formData = new FormData();
Object.keys(obj).forEach((key) => {
if (Array.isArray(obj[key])) {
obj[key].forEach((item, index) => {
if (typeof item !== 'object') {
formData.append(key, item);
} else {
Object.keys(item).forEach((arrKey) => {
if (item[arrKey]) {
formData.append(`${key}[${index}].${arrKey}`, item[arrKey]);
}
})
}
});
} else if (obj[key] != null) {
formData.append(key, obj[key]);
}
});
return formData;
}
const setHeaders = (xhr) => {
if (!isEmptyObject(head)) {
Object.keys(head).forEach(key => {
xhr.setRequestHeader(key, head[key])
})
}
}
const handleReadyStateChange = (xhr, key, resolve, reject, requestTasks) => {
return () => {
if (xhr.readyState === 4) {
requestTasks.delete(key);
if (xhr.status === 200) {
try {
let res = JSON.parse(xhr.response);
success(