每五次迭代后暂停循环一秒钟



对于我的程序,我必须发出100个JSON请求。不幸的是,每秒只允许5个呼叫。由于我使用for循环来发出所有JSON请求(这是最好的方法),因此我必须在每5次调用后暂停循环1秒钟。

function Hello() {
   $("#randomdiv").show();
   for (var i=0; i<100; i++) {
       if (i%5 == 0 && i>0) {
         sleep(1000);
       }   
       $.getJSON(JSONreq, function(data) {Just a JSON request, nothing special}) 
    };  
};

sleep(1000)会使整个页面冻结约20秒,并防止#randomdiv在发出JSON请求之前出现。

我能做些什么来解决这个问题?非常感谢:)

您可以使用带闭包的超时:

function Hello() {
   $("#randomdiv").show();
   var loop = getLoop();
   loop();
};
function getLoop() {
    var count = 0;
    var func = function() {
        for (var i = 0; i < 5; ++i) {
            $.getJSON(JSONreq, function(data) {Just a JSON request, nothing special}) 
        }
        if (++count < 20) {
            setTimeout(func, 1000);
        }
    }
    return func;
}

您可以这样做:

function Hello() {
    $("#randomdiv").show();
    for (var i = 0; i < 100; i++) {
        var interval = 0;
        if (i % 5 == 0 && i > 0) {
            interval = 1000;
        }
        setTimeout(function () {
            getJson()
        }, interval);
    };
}
function getJson() {
    $.getJSON(JSONreq, function (data) {
        Just a JSON request, nothing special
    });
}

相关内容

  • 没有找到相关文章

最新更新