2012-03-10 241 views
0

我正在查询XML文档中列出的电影的Rotten Tomatoes API。我遇到的问题是,whist迭代并查询每个电影,我正在触及RT的API限制,而这反过来又会引发IO错误。AS3延迟执行?

有没有一种方法可以延迟执行循环约一秒左右,以避免这种情况?

回答

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(); 
} 
0

什么是你从导致错误的XML加载? XML不应该花很长时间才能加载。如果您的加载项包含在xml中,那么计时器将不会有帮助。这将花费太长时间,并给人一种糟糕的体验。假设用户有一个快速连接,但仍然需要等待每个文件的延迟。我要做的是检查以确保在移动到下一个文件之前已经加载了一个文件(loadBytes)。你只需要做到这一点,每个节点中包含的最大文件就足够了。

这将更灵活地依赖于用户连接。