【问题标题】:Best way to slow down ajax call/xhr requests减慢 ajax 调用/xhr 请求的最佳方法
【发布时间】:2012-05-28 10:32:10
【问题描述】:

不确定我的问题表述是否正确,但我有以下代码。基本上是想发出一个 ajax 请求,检查回调,然后重新执行 ajax,直到它得到所需的响应(在示例中为 connectedvoter==1)。

问题是它只需要大约 80 毫秒,并且 xhr 的数量以这种速度非常快地达到巨大的数字。我试图想出一种“暂停”的方法,但我能想到的一切都占用了 cpu。

有没有办法“减慢”请求的数量,比如一两秒一次而不占用 CPU?

var connctedvoter = 0;
var govoters = function () {
        $.ajaxSetup({
            async: false
        });
        var url = "getconnectedvoter.php";
        var data = {
            userid: userid
        };
        $.getJSON(url, data, callback);
    };
var pausevoters = function () {
        console.log("pausing ajax voters");
    };
var callback = function (response) {
        if (response.error) {
            return;
        }
        if (response.connectedvoter == 0) {
            setTimeout(govoters, 150);
            //govoters();
        } else {
            $('#vanid').html(response.vanid);
            $('#name').html(response.name);
            $("#mapurl").attr("src", response.mapurl);
            $('.call').fadeIn();
            return;
        }
    };
//DO THIS TO START
setTimeout(govoters, 150);
pausevoters();

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    只是增加超时的延迟:

    if(!response.connectedvoter) {
      setTimeout(govoters, 2000); // instead of 150
    }
    

    而不是一秒钟的 10 个请求:

    setTimeout(govoters, 150); // one request every 150 millisecond. 
    

    请注意,您可以从这里开始更改:

    //DO THIS TO START
    setTimeout(govoters, 150);
    

    到这里:

    //DO THIS TO START
    govoters();
    

    这里真的不需要超时。

    【讨论】:

    • 哈,那很简单...谢谢您可能应该意识到这一点!
    【解决方案2】:

    只需使用此代码更改行:

    setTimeout(govoters, 150);
    

    与:

    setTimeout(govoters, 1000); // 1 second
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      相关资源
      最近更新 更多