我的尝试中,有太多的API请求导致我自己接受临时API禁令。以下是我正在做的事情:
$.each(api_field, function(index, sector ) {
"use strict";
$.each(sector, function( key, values) {
$.getJSON("URL", function(result){
$.each(result, function(i, field){
$("body").append(field + " ");
});
});
});
});
我的脚本运行62个URL,每个API请求需要休眠1-5秒。如何使用jQuery .wait()
函数不仅仅在几秒钟内请求所有数据?
注意:我的脚本完全正常工作,我只需要为每个请求添加一个延迟。
答案 0 :(得分:2)
我在过去的项目中已经遇到过这种情况。
我使用.delay()
来延迟迭代过程。
如果您使用.delay()
$.each(api_field, function(index, sector ) {
"use strict";
$.each(sector, function( key, values) {
$.getJSON("URL", function(result){
$.each(result, function(i, field){
$("body").delay(5000*i).queue(function(next){
$(this)..append(field + " ");
next();
});
});
});
});
});
将时间更改为您想要的时间1000 = 1s
。
答案 1 :(得分:2)
你不需要jQuery。使用setTimeout
:
var i = 0;
$.each(api_field, function (index, sector) {
"use strict";
$.each(sector, function (key, values) {
i++;
setTimeout(function () {
$.getJSON("URL", function (result) {
$.each(result, function (i, field) {
$("body").append(field + " ");
});
});
}, 1000 * i); // Or 5000
});
});
答案 2 :(得分:0)
您可以使用setTimeout进行延迟:
setTimeout(function(){
$.getJSON("URL", function(result){
$.each(result, function(i, field){
$("body").append(field + " ");
});
});
},1000*index);//<---index from outermost each.
每次迭代会延迟一秒钟。