<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>请求超时与网络异常</title>
<style>
#result{
width: 200px;
height: 100px;
border: solid 1px #90b;
}
</style>
</head>
<body>
<button>点击发送请求</button>
<div id="result"></div>
<script>
const result = document.getElementById('result');
const btn = document.getElementsByTagName('button')[0];
btn.addEventListener('click', function (){
const xhr = new XMLHttpRequest();
// 超时设置 2s
xhr.timeout = 2000;
// 超时回调
xhr.ontimeout = function (){
alert('请求超时!!!');
}
// 网络异常回调
xhr.onerror = function (){
alert('你的网络似乎出了一点问题');
}
xhr.open('GET', 'http://127.0.0.1:8000/delay');
xhr.send();
xhr.onreadystatechange = function (){
if(xhr.readyState === 4){
if(xhr.status >=200 && xhr.status <300){
result.innerHTML = xhr.response;
console.log(xhr.response);
}
}
}
})
</script>
</body>
</html>
// 延时响应
app.all('/delay', (express, response)=>{
// 设置响应头 设置允许跨域
response.setHeader('Access-Control-Allow-Origin', '*');
response.setHeader('Access-Control-Allow-Headers', '*');
setTimeout(() =>{
// 设置响应体
response.send('延时响应!!!');
}, 1000)
});
当把时间设置为3000ms时候
setTimeout(() =>{
// 设置响应体
response.send('延时响应!!!');
}, 3000)
恢复时间设置 还是1000ms
页面设置为offline(断网情况)