0

私のプログラムでは、100 個の JSON リクエストを作成する必要があります。残念ながら、毎秒 5 回の呼び出ししか許可されていません。すべての JSON リクエストを for ループで作成しているため (これが最善の方法です)、1 秒間に 5 回の呼び出しを行うたびにループを一時停止する必要があります。

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 秒間フリーズし、#randomdivJSON 要求が行われる前に が表示されなくなります。

この問題を解決するにはどうすればよいですか? どうもありがとう :)

4

2 に答える 2

0

クロージャーでタイムアウトを使用できます。

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;
}
于 2013-08-26T00:08:35.727 に答える
-1

次のようなことができます。

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
    });
}
于 2013-08-26T00:09:31.577 に答える