0

我有一个间隔,它每 3 秒运行一个函数。

intervalStepper = window.setInterval('intervalTick()','3000');

function intervalTick() {
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            gotResult(xmlhttp.responseText);
        }
    }
    xmlhttp.open('GET','index.php?ajax=true',true);
    xmlhttp.send();
}
function gotResult(res) {
    alert(res);
}

此外,我还有另一个 Ajax 调用,它在按钮单击时运行。

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        agentDetailGotten(xmlhttp.responseText);
    }
}
xmlhttp.open('GET','index.php?anotherPage=true',true);
xmlhttp.send();

现在,如果我在时间间隔滴答作响并执行第一个调用时及时运行第二个代码,那么这些调用实际上几乎在同一时间运行。但后来似乎间隔以某种方式消失了——他不再滴答作响了。

这是一个已知问题还是我只是没有看到什么大问题......

感谢帮助!

4

2 回答 2

0

尝试清除并再次设置您的时间间隔:

intervalStepper = window.setInterval('intervalTick()',3000);

function intervalTick() {

    window.clearInterval(intervalStepper);

    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            gotResult(xmlhttp.responseText);
        }
    }
    xmlhttp.open('GET','index.php?ajax=true',true);
    xmlhttp.send();

    intervalStepper = window.setInterval('intervalTick()',3000);

}

function gotResult(res) {
    alert(res);
}
于 2012-06-01T13:20:36.547 回答
0

我刚才已经解决了。

看起来这有点像 firefox 错误(在 bugzilla.mozilla.org 上找到)

NS_ERROR_NOT_AVAILABLE

这个没有显示给我,但我现在才发现。它在 Firefox 尝试同时执行两个调用时出现。

有关更多信息,我在这里找到了一个博客条目

我解决了这个问题,如果一个呼叫正在运行,另一个则等待。

于 2012-06-01T14:12:11.960 回答