我怎样才能继续循环使用XMLHttpRequest的JavaScript函数,只有在我得到该请求的响应之后



我的要求是在我从现有 xhr 请求获得响应后循环(不断重新调用)请求。我目前正在将超时设置为 2 秒。但我仍然不确定这是否有效。我不想要严格的超时,因为请求有时可能需要一段时间,这没关系(因为它有一个数据库调用)。那么有什么建议如何在我得到响应后再次调用该函数吗?

var request = (window.XMLHttpRequest) ? new XMLHttpRequest() : (window.ActiveXObject ? new window.ActiveXObject("Microsoft.XMLHTTP") : false);
function htmlGen (log){
var data_count = someNumber;
var url = someURL;
request.open("GET", url, true);
request.timeout = 2000;
request.onreadystatechange = updatePage; //some function to update my page
request.send(null);
}        
function timerCntrl(command,log) {
if (command == "start") {
document.getElementById("start").disabled = true;
document.getElementById("stop").disabled = false;
timer = setInterval(function() { htmlGen(log);}, 2000);
}else{
document.getElementById("watchStart").disabled = false;
document.getElementById("watchStop").disabled = true;
clearTimeout(timer);
}
}

提前致谢:)

这段代码应该可以工作。它发出请求,然后等待其响应。一旦响应到达,它就会发出另一个请求,然后等待它的响应......等等...

var request = (window.XMLHttpRequest) ? new XMLHttpRequest() : (window.ActiveXObject ? new window.ActiveXObject("Microsoft.XMLHTTP") : false);
var url;
function updatePage();
async function startRequests() {
while(true) {
request.open("GET", url, false);
request.onreadystatechange = updatePage; //some function to update my page
request.send(null);
}
}

请注意,由于某种原因,这些不会记录在控制台上(女巫很有趣,让我不得不处理 SO 中的"请求过多"错误)。而且,这真的不是一件好事。这更像是DDoS,而不是实际的HTTP请求。小心使用这个。

最新更新