我的要求是在从现有的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);
}
}
提前致谢:)
答案 0 :(得分:1)
此代码应该有效。它发出请求然后等待它的响应。一旦响应到来,它就会发出另一个请求,然后等待响应...等等......
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中的“Too Many Requests”错误)。而且,这真的不是一件好事。这更像是DDoS,而不是实际的HTTP请求。小心使用它。