原生ajax终断请求的几种方式
终断请求的方式有很多种,这里就介绍一下最常见的几种
- 通过前端设置请求超时时间,这里一般会与后端设置的响应时间连在一起使用(请求后端数据量大暂不考虑)
- 假设提交表单只需要2s,当你频繁点击就会发出多次请求,为了减轻服务器压力,那么在请求时给一个参数判断服务器是否响应,如果未响应则再次请求就终断上一次请求(这里用的原生的终止,不通过节流控制方法执行时间)
- 跟第二种相似,在部分业务场景中会遇到一个请求接口的按钮,一个取消的按钮(取消为不请求接口了),方法与第二种一致
首先创建一个简单的请求
let xhr = new XMLHttpRequest();
xhr.open("get", "http://localhost:8000/test");
xhr.send();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status < 300) {
console.log(xhr.status);
console.log(xhr.statusText);
console.log(xhr.getAllResponseHeaders());
console.log(xhr.response);
}
}
};
xhr.timeout = 2000;
let isSending = false;
if (isSending) xhr.abort();
if (xhr.status >= 200 && xhr.status < 300) {
isSending = false;
}
cancelBtn.onclick = function () {
xhr.abort();
};