当进行前后端通信时,如果响应没有设置结束导致请求一直处于被挂起的状态,或者超出了我们设置的时间,就会发生通信超时。
我们可以通过设置请求的 timeout属性 来设置超时时间:
request.timeout = 2000;
超时时间必须设置在open方法执行以后,send方法执行之前。
当超时发生时, timeout事件 将会被触发。
request.addEventListener(“timeout”,timeoutHandler);
当超时发生以后,我们需要断开通信连接,这时需要使用abort方法:
request.abort();
综合运用示例:
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", readyStateChangeHandler);
xhr.addEventListener("timeout", timeoutHandler); /z侦听超时事件
xhr.open("POST", "http://10.9.72.236:4010");
xhr.timeout = 5000; //设置超时时间
xhr.send("a=1&b=2");
function readyStateChangeHandler(e) {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log("通信完成并且成功");
} else if (xhr.readyState === 4) {
console.log("通信完成,但是通信可能有误");
} else {
console.log("通信的过程");
}
}
function timeoutHandler(e) {
console.log("超时了");
xhr.abort(); //断开连接
}