0

Rotten Tomatoes API の制限は 1 秒あたり 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 秒間読み込みを待ってから、すべてをまとめて読み込みます。setTimeoutfor 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 に答える