对于我的程序,我必须发出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秒,并阻止在发出JSON请求之前出现#randomdiv
。
我该怎么做才能解决这个问题? 非常感谢:)
答案 0 :(得分: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;
}
答案 1 :(得分:-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
});
}