1

我正在尝试做一个聊天应用程序,所以我需要它来始终接收服务器信息。因此,当请求完成时,在:

http.onreadystatechange=function(){

我再次调用了该函数,所以:

request();

然后一切都在一个循环中发生。问题是它只在谷歌浏览器中工作。explorer 和 firefox,不要等到 get.onreadystatechange=function(),然后继续调用 return() 就像每秒 100 次一样,无缘无故 :(

function request()
{
    var get;
    if (window.XMLHttpRequest)
    {
        get = new XMLHttpRequest();
    }
    document.getElementById("request_status").innerHTML = "requests: "+requests;
    get.onreadystatechange=function()
    {
     if (get.readyState==4 && get.status==200)
       {
        requests+=1;
        request();
       }
    }
    get.open("GET","request.php",true);
    get.send();
}

在谷歌浏览器中,“请求”每秒增长 4 个。在 explorer 和 firefox 中,它们每秒增长 200 个,所以出了点问题!

4

2 回答 2

0

我无法检查资源管理器,但是当我在这个 Fiddle 中执行此操作时,Firefox 适用于您的示例:http: //jsfiddle.net/ZHdgb/1/

虽然它似乎对我有用,但也许尝试发出这些同步请求,以便一次只触发一个。见下文:

改变

get.open("GET","request.php",true);

至:

get.open("GET","request.php",false);

于 2013-07-09T05:43:19.540 回答
-1

在函数结束时,您将希望setTimeout(functionHere(), timeInMilisHere)在指定时间(以 ms 为单位)后连续调用您的函数

于 2013-07-09T05:27:00.143 回答