您的位置:首页 > 理论基础 > 计算机网络

使用XMLHttpRequest 实现http 终止请求和超时

2017-09-08 16:18 369 查看
getXMLHttpRequest : function () {
return new XMLHttpRequest();
},
var httpGet = function (url, cbSucc, cbFail, options) {
var flag = false;
var xhr = cc.loader.getXMLHttpRequest();
xhr.open("GET", url);
var timedOut = false;
var timer = setTimeout(function(){
timedOut = true;
xhr.abort();
}, 3000);

if (cc.sys.isNative)
xhr.setRequestHeader("Accept-Encoding", "gzip,deflate");

var isRaw = false;
if (options && options.responseType) {
isRaw = true;
xhr.responseType = options.responseType;
delete options.responseType;
}

for (var k in options)
if (options.hasOwnProperty(k))
xhr.setRequestHeader(k, options[k]);

xhr.onreadystatechange = function () {
if(timedOut){
return;
}
clearTimeout(timer);
if (xhr.readyState == 4) {
if (xhr.status == 200) {
if (isRaw)
cbSucc(new Uint8Array(xhr.response));
else
cbSucc(xhr.responseText);
}
else {
if (!flag) {
flag = true;
cbFail(xhr.statusText, xhr.responseText);
}
}
}
};
xhr.onerror = function () {
if (!flag) {
flag = true;
cbFail(xhr.status, null);
}
};
xhr.send();
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: