小程序promise封装
const requestFetch = (url, method, param) => {
let ajaxTimes = 0;
ajaxTimes++;
wx.showLoading({
title: "加载中",
mask: true
});
let header = {
'Authorization': wx.getStorageSync('token'),
'content-type': 'application/json'
};
return new Promise((resolve, reject) => {
wx.request({
data: param,
header: header,
method: method,
url: baseUrl + url,
success: (result) => {
const errArrCode = [2010, 1008, 2016]
if (result.data.code == 2008) {
Notify({
type: 'danger',
message: '登录失效,返回重新登录'
});
wx.removeStorageSync('token')
setTimeout(() => {
wx.reLaunch({
url: '../login/login'
})
}, 1500)
} else if (result.data.code == 2015) {
Notify({
type: 'danger',
message: result.data.msg
});
wx.removeStorageSync('token')
setTimeout(() => {
wx.reLaunch({
url: '../login/login'
})
}, 1500)
} else if (errArrCode.includes(result.data.code)) {
Notify({
type: 'danger',
message: result.data.msg
});
return
} else if (result.data.code == 200) {
resolve(result.data.data)
} else {
Notify({
type: 'danger',
message: '网络错误'
});
}
},
fail: (err) => {
Notify({
type: 'danger',
message: '网络连接失败'
});
reject(err)
},
complete: () => {
ajaxTimes--;
if (ajaxTimes === 0) {
wx.hideLoading();
}
}
})
})
}
const deepCopy = (obj, cache = []) => {
if (obj === null || typeof obj !== 'object') {
return obj;
}
const hit = cache.filter(c => c.original === obj)[0];
if (hit) {
return hit.copy;
}
const copy = Array.isArray(obj) ? [] : {};
cache.push({
original: obj,
copy,
});
Object.keys(obj).forEach(key => {
copy[key] = deepCopy(obj[key], cache);
});
return copy;
}