ajax 钉钉有jsapi 但是每次要写的参数太多而且无法拦截来处理其他事物;所以基于这个需求我们将httpRequest上层封装一下promise。
function ddPromisify(fn) {
return function (obj = {}) {
return new Promise((resolve, reject) => {
obj.success = function (res) {
// dd.alert({content:'success'+JSON.stringify(res.data.activity)})
//成功
// console.log("成功了了·····" + res);
// setTimeout(function () {
// dd.httpRequest.hideLoading();
// }, 100);
if(res.data.code==200){
resolve(res)
}else{//抛出异常
// setTimeout(function () {
// dd.httpRequest.hideLoading();
// }, 100);
// dd.httpRequest.showModal({
// title: '提示',
// content: res.data.message,
// confirmColor: '#118EDE',
// showCancel: false,
// success: function (res) {
// if (res.confirm) {
// //console.log('用户点击确定')
// }
// }
// });
}
}
obj.fail = function (res) {
//失败
// console.log("失败了·····"+res);
// setTimeout(function () {
// dd.httpRequest.hideLoading();
// }, 100);
// dd.httpRequest.showToast({
// title: '服务器暂时无法连接',
// icon: 'loading',
// duration: 2000
// })
dd.alert('fail',JSON.stringify(res))
reject(res)
}
fn(obj)
})
}
}
//无论promise对象最后状态如何都会执行
Promise.prototype.finally = function (callback) {
let P = this.constructor;
return this.then(
value => P.resolve(callback()).then(() => value),
reason => P.reject(callback()).then(() => { throw reason })
);
};
/**
* 微信请求get方法
* url
* data 以对象的格式传入
*/
function getRequest(url, data) {
var getRequest = ddPromisify(dd.httpRequest)
return getRequest({
url: url,
method: 'GET',
data: data,
header: {
'Content-Type': 'application/json'
}
})
}
/**
* 微信请求post方法封装
* url
* data 以对象的格式传入
*/
function postRequest(url, data) {
var postRequest = ddPromisify(dd.httpRequest)
return postRequest({
url: url,
method: 'POST',
data: data,
header: {
"content-type": "application/x-www-form-urlencoded"
},
})
}
/**
* 微信请求post方法封装
* url
* data 以对象的格式传入
*/
function postRequestJson(url, data) {
var postRequest = ddPromisify(dd.httpRequest)
return postRequest({
url: url,
method: 'POST',
data: data,
header: {
'Content-Type': 'application/json'
},
})
}
/**
* 微信请求post方法封装
* url
* data 以对象的格式传入
*/
function postRequestParamAndBody(url,param, data) {
var str = "?";
for (var key in param) {
str = str + "&" + key + "=" + param[key]
};
var postRequest = ddPromisify(dd.httpRequest)
return postRequest({
url: url+str,
method: 'POST',
data: data,
header: {
'Content-Type': 'application/json'
},
})
}
/**
* 微信请求put方法封装
* url
* data 以对象的格式传入
*/
function putRequest(url, data) {
var str = "?";
for (var key in data) {
str = str + "&" + key + "=" + data[key]
};
var putRequest = ddPromisify(dd.httpRequest)
return putRequest({
url: url + str,
method: 'PUT',
data: data,
header: {
"content-type": "application/x-www-form-urlencoded"
},
})
}
/**
* 微信请求put方法封装
* url
* data 以对象的格式传入
* parmare对象传入
*/
function putRequestParamAndBody(url, parmaer, data) {
var str = "?";
for (var key in parmare) {
str = str + "&" + key + "=" + parmare[key]
};
var putRequest = ddPromisify(dd.httpRequest)
return putRequest({
url: url + str,
method: 'PUT',
data: data,
header: {
"content-type": "application/x-www-form-urlencoded"
},
})
}
/**
* 微信请求delete方法封装
* url
* data 以对象的格式传入
*/
function deleteRequest(url, data) {
var str="?";
for(var key in data){
str = str + "&" + key + "=" + data[key]
};
console.log(str);
var deleteRequest = ddPromisify(dd.httpRequest)
return deleteRequest({
url: url + str,
method: 'DELETE',
data:data,
header: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
}
module.exports = {
postRequest: postRequest,
getRequest: getRequest,
putRequest: putRequest,
postRequestJson: postRequestJson,
deleteRequest: deleteRequest,
postRequestParamAndBody: postRequestParamAndBody
}
网友评论