对于我的程序,我必须发出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
});
}