0

我的烂番茄 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在 for each 循环中给出了函数。因此,似乎没有任何影响。我究竟做错了什么 ?

4

1 回答 1

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
}
于 2012-04-15T08:03:38.330 回答