>我有一个应用程序,它必须在循环中进行 50 到 100 次 API 调用。烂番茄的调用限制为每秒 10 次。因此,我的请求在两者之间失败,每次我都会得到不同的结果。在不超过每秒 10 个请求限制的情况下发出这 50 个请求的有效方法是什么?这是我的代码:
$.each(elem, function (index, item) {
var $placeholder = $('<div>').appendTo("div.content");
$.ajax({
type: 'post' ,
url: moviesSearchUrl + '&q=' + encodeURI(item) + '&page_limit=1',
dataType: "jsonp",
async: false,
success: searchCallback
});
function searchCallback(data) {
var movies = data.movies;
var markup = index + ': '+ movies[0].title + '<img class=" bord" src="' + movies[0].posters.thumbnail + '" /><br/>';
$placeholder.replaceWith(markup);
}
});
这取决于您要做什么。如果结果是直接(行)进入您正在渲染的用户网页(并且没有可以执行的批量调用而不是单个调用),那么您几乎无能为力(您至少需要 5 秒来呈现该页面)。
如果您经常重复使用相同的内容,那么如果服务提供商的条款允许,则可能值得在短时间内缓存呼叫结果,以避免一次又一次地点击所有呼叫。
同意上述观点 - 如果您直接呈现到具有多个用户的网页,您将遭受严重损失 - 最好考虑一个简短的缓存策略。