利用promise实现ajax
const sendAjax = function(method,url,param) {
const promise = new Promise(function(resolve, reject){var xmlhttp;
// 创建XMLHttpRequest
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
// 设置超时,单位秒;
xmlhttp.timeout = 10000;
// 超时处理函数
xmlhttp.ontimeout = function (e) {
// XMLHttpRequest timed out. Do something here.
alert(‘亲,网络塞车了,先听首歌吧’);
};// 请求返回处理
xmlhttp.onreadystatechange = function() {
// 读取对象状态
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
// 读取返回状态和结果,200表示http请求成功
if (xmlhttp.status == 200) {
// 获取返回数据
resolve(xmlhttp.responseText);} else {
// 异常处理
reject(new Error(xmlhttp.statusText));
}
}}
// 请求方式POST/GET
// 请求地址 url
// true(异步)或 false(同步)
var async = true;
xmlhttp.open(method,url,async);
// 设置头部信息
xmlhttp.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”);
// 发起请求,并传递参数
xmlhttp.send(param);});
return promise;
};sendAjax(‘POST’,”/post”,”key=val”).then(function(json) {
console.log(‘Contents: ‘ + json);
}).catch(function(error) {
console.log(‘出错了:’ + error);
});
Leave a Reply