如何预防"没有回应"错误?

时间:2014-11-18 13:33:22

标签: javascript jquery internet-explorer

我们是跟踪软件,我们需要使用Internet Explorer。

function track(url){
    window.setInterval(function (){
        $.getScript("http://" + Math.floor(Math.random() * 1000) + "." + url);
    },1000)
}

track("example.com/track.php");

但是,大约15秒后,Internet Explorer会停止它并说“不响应”#34;错误。 (在任务经理中)。我们应该采取哪种方式来防止此类错误?

1 个答案:

答案 0 :(得分:2)

这种情况最有可能发生,因为你在脚本加载之间给你的函数间隔1秒,但加载脚本需要1秒多的时间才能加载脚本,所以它在完成第一个脚本之前再次开始加载它,并且导致资源使用率过高,因为它会使负载在完成之前在另一个上面累积。

我不确定您的跟踪工作方式,但您可以使用setTimeout代替setInterval来避免这种情况,并在完成后再次调用,或设置更高的时间间隔(可能是10秒)

差异:

setTimeout() - 在指定时间后执行ONCE

setInterval() - 在指定的间隔时间内永远执行。

<强>实施例

- 更高的间隔:

window.setInterval(function () {
    $.getScript("http://" + Math.floor(Math.random() * 1000) + "." + url);
}, 10000)

- 使用超时而不是间隔:

window.setTimeout(function () {
    $.getScript("http://" + Math.floor(Math.random() * 1000) + "." + url);
}, 1000)