AS3 Задержка исполнения? - PullRequest
       2

AS3 Задержка исполнения?

0 голосов
/ 10 марта 2012

Я запрашиваю API Rotten Tomatoes для фильмов, перечисленных в документе XML.Проблема, с которой я сталкиваюсь, заключается в том, что вист выполняет итерацию и запрашивает каждый фильм, для которого задан предел API RT, что, в свою очередь, приводит к ошибке ввода-вывода.

Есть ли способ отложить выполнение вили около того, чтобы избежать этого?

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Краткий ответ: используйте 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();
}
0 голосов
/ 24 сентября 2014

Что вы загружаете из XML, который вызывает ошибку? XML не должен занимать много времени для загрузки. Если ваши элементы загрузки содержатся в XML, то таймер не поможет. Это займет слишком много времени и даст плохой опыт. Скажем, у пользователя быстрое соединение, но ему все еще приходится ждать задержки для каждого файла. Что я должен сделать, это проверить, что я загрузил один файл (loadBytes), прежде чем перейти к следующему файлу. Вам нужно будет сделать это только с самым большим файлом, содержащимся в каждом узле, должно быть достаточно.

Это было бы более гибко в зависимости от подключения пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...