取消Javascript超时
我在Web服务器上有一个很长的进程。这个东西是由一个用户点击一个按钮从一个网页上触发的。一些Javascript定期通过Ajax进行轮询,以检查操作是否已完成服务器端。为此,我使用取消Javascript超时,javascript,Javascript,我在Web服务器上有一个很长的进程。这个东西是由一个用户点击一个按钮从一个网页上触发的。一些Javascript定期通过Ajax进行轮询,以检查操作是否已完成服务器端。为此,我使用setInterval,然后使用clearInterval停止轮询 如果这花费的时间太长(例如服务器崩溃),我希望客户端收到某种超时通知。我做了一些研究,发现了setTimeout。问题是,如果操作在超时之前成功完成,我想取消这个操作 如何做到这一点 你会建议一种不同的方法吗 PS:我特别针对的是IE7/IE8,但总是
setInterval
,然后使用clearInterval
停止轮询
如果这花费的时间太长(例如服务器崩溃),我希望客户端收到某种超时通知。我做了一些研究,发现了setTimeout
。问题是,如果操作在超时之前成功完成,我想取消这个操作
PS:我特别针对的是IE7/IE8,但总是对一些JQuery开放,只要将间隔id存储在变量中,就可以随时使用它清除间隔
var interval = window.setInterval(yourFunction, 10000);
...elsewhere...
window.clearTimeout(interval);
有关更多信息,请参阅
组合一个包含.的快速JS提琴来清除设置超时,使用.您需要两个计时器(如您所说)
var checkCount = 0;
function checkComplete() {
console.log("test " + checkCount);
if (checkCount++ > 10) {
console.log("clearing timeout");
window.clearInterval(pollInterval);
window.clearTimeout(expireTimer);
}
}
function cancelPolling(timer) {
console.log("clearing poll interval");
window.clearInterval(pollInterval);
}
var pollInterval = window.setInterval(checkComplete, 500);
var expireTimer = window.setTimeout(cancelPolling, 10000);
您可以摆弄checkCount
常量“10”-将其调低以模拟轮询成功,将其调高以在达到checkCount之前发生超时,模拟轮询失败