0

XMLドキュメントにリストされている映画のRottenTomatoesのAPIをクエリしています。私が抱えている問題は、各映画を繰り返してクエリを実行し、RTのAPI制限に達しており、IOエラーがスローされていることです。

これを回避するために、ループ内の実行を約1秒ほど遅らせる方法はありますか?

4

2 に答える 2

1

簡単な答え: を使用しTimerます。

配列に 100 個の映画があるとします。

var movies:Array;

そして、これらの映画ごとに、サーバーで API を呼び出す必要があります。まず、現在のムービーをマークする変数を維持します。

var currentMovieIndex:int = 0; // first movie

次に、URLLoader を使用していると仮定します。

private function makeAPICall():void
{
    // Construct URLRequest based on current movie object.
    var urlRequest:URLRequest = getURLRequest(movies[currentMovieIndex]);

    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener("complete", completeHandler);
    urlLoader.load(urlRequest);
}

getURLRequest()URLRequest引数として渡すムービーのオブジェクトを提供する関数です。

あなたのcompleteHandler()

private function completeHandler(event:Event):void
{
    ...

    if (++currentMovieIndex < 100) {
        var timer:Timer = new Timer(3000, 1); // 3-second delay
        timer.addEventListener("timer", timerHandler);
        timer.start();
    }
}

あなたのtimerHandler()

private function timerHandler(event:Event):void
{
    makeAPICall();
}
于 2012-03-10T21:10:01.673 に答える
0

エラーの原因となっている xml から何を読み込んでいますか? XML の読み込みに時間がかかることはありません。xml に含まれるアイテムをロードする場合、タイマーは役に立ちません。時間がかかりすぎて、悪い経験になります。ユーザーの接続は高速ですが、各ファイルの遅延を待つ必要があるとします。私がすることは、次のファイルに移動する前に、1 つのファイル (loadBytes) をロードしたことを確認することです。各ノードに含まれる最大のファイルでこれを行うだけで十分です。

これは、ユーザーの接続により柔軟に依存します。

于 2014-09-24T19:56:13.553 に答える