有没有办法在处理程序中再次调度事件?

时间:2015-08-18 11:13:53

标签: flex asynchronous urlloader flexunit

对于我的测试,我需要加载大约1000个文件,然后逐个执行一些操作。问题是我无法在处理程序中加载另一个文件,flexunit只是在调用load()后退出。它在我使用另一个加载器时有效,之前添加了Event Listener(参见代码),但我不认为添加~1000个加载器是个好主意。

我还尝试在处理函数中创建新的loader对象,但是当我尝试在那里添加Event Listener时,我收到了“乱序收到的异步事件”错误。

我该怎么办?

[Test(async)]
public function testTest():void
{
    loader.addEventListener(Event.COMPLETE, Async.asyncHandler(this, onComplete, 10000), false, 0, true);
    loader.load(new URLRequest("file.xml"));
    //loader2.addEventListener(...);

    function onComplete(e:Event, passTroughtData:Object):void
    {
        //performing my actions with loaded file
        trace("loaded");
        //attempt 1 - test finishes after the next line
        loader.load(new URLRequest("other_file.xml"));

        //attempt 2 - causes Out of order error
        //loader = new URLLoader();
        //loader.addEventListener(Event.COMPLETE, Async.asyncHandler(this, onComplete, 10000), false, 0, true);
        //loader.load(new URLRequest("other_file.xml"));
    }
}

1 个答案:

答案 0 :(得分:0)

执行我想要的最简单方法是创建一个加载器数组(每个文件的额外加载器),并在调用第一个load()方法之前向它们添加侦听器。