我的烂番茄API限制为10次/秒。我需要总共打50个电话。
如果我把它们全部组合在一起,很多电话都会被拒绝。
因此我需要在每10次通话后给出1秒的超时时间。
我该如何实现?这是我的代码:
$.get("t250.txt", function (data) {
var elem = data.split("\n");
$.each(elem, function(index, item) {
var $placeholder = $('<div>').appendTo("div.content");
setTimeout(function() {
$.ajax({
type: 'post',
url: moviesSearchUrl + '&q=' + encodeURI(item) + '&page_limit=1',
dataType: "jsonp",
async: false,
success: searchCallback
});
}, 1000);
function searchCallback(data){});
}
}
问题仍然存在。此外,页面等待1秒钟加载,然后完全加载所有内容。我在每个循环中都给了setTimeout
函数。似乎没有效果。我做错了什么?
答案 0 :(得分:1)
删除async: false
中的$.ajax()
。
修改强> 试试这个:
var elem;
var timeoutId;
function getURLs(){
$.get("t250.txt", function (data) {
elem = data.split("\n");
});
timeoutId = setTimeout("sendRequest()", 1000);
}
var idx = 0;
function sendRequest(){
if (idx > elem.length-1){
clearTimeout(timeoutId);
return;
}
var item = elem[idx];
$.ajax({
type: 'post',
url: moviesSearchUrl + '&q=' + encodeURI(item) + '&page_limit=1',
dataType: "jsonp",
success: searchCallback
});
idx++;
}
function searchCallback(data) {
//Callback logic
}