Javascript xmlhttprequest始终

Javascript xmlhttprequest始终,javascript,http,google-chrome,firefox,xmlhttprequest,Javascript,Http,Google Chrome,Firefox,Xmlhttprequest,我正在尝试做一个聊天应用程序,所以我需要它始终接收服务器信息。因此,当请求完成时,在: http.onreadystatechange=function(){ 我再次调用了该函数,因此: request(); 然后一切都在循环中发生。问题是,它只在谷歌浏览器中工作。浏览器和firefox,不要等到get.onreadystatechange=function(),然后继续以每秒100次的速度调用return(),没有任何原因:( 在google chrome中,“请求”的增长速度为每秒4次。

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

http.onreadystatechange=function(){
我再次调用了该函数,因此:

request();
然后一切都在循环中发生。问题是,它只在谷歌浏览器中工作。浏览器和firefox,不要等到
get.onreadystatechange=function()
,然后继续以每秒100次的速度调用return(),没有任何原因:(


在google chrome中,“请求”的增长速度为每秒4次。在explorer和firefox中,它们的增长速度为每秒200次,因此出现了问题!

在函数末尾,您需要使用
setTimeout(functionHere(),timeInMilisHere)
若要在指定时间后以毫秒为单位连续调用函数,我无法检查Explorer,但Firefox适用于您的示例,当我使用此小提琴时:

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

改变

get.open(“get”,“request.php”,true);

致:


get.open(“get”,“request.php”,false);

但是如果我在函数结束时调用它,我不需要时间,函数将以尽可能快的速度被调用。什么是你不需要时间?就像时间对被调用的函数没有任何影响一样?我不需要使用延迟来在一段时间内调用函数,因为我已经在函数结束时调用了它。所以就这样吧尽可能快地初始化,而不是使用
request();
使用
setTimeout(request(),1000)
如果你想要更多的时间,那会将调用间隔1秒,但是我会收到很多未完成的请求。我最好只在最后一个请求完成后才请求一个新请求,不是吗?看看开发人员工具中的“网络”选项卡。你得到缓存结果了吗?+1用于缓存。我已经创建了一个JSFIDLE,在IE中,302个响应
请求的增量非常快
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();
}