首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flexunit addAsync链接

flexunit addAsync链接
EN

Stack Overflow用户
提问于 2008-12-31 06:32:04
回答 1查看 1.1K关注 0票数 2

由于某些原因,当我尝试这样做时,this article中描述的flexunit测试中的addAsync链接完全无法工作。

代码语言:javascript
复制
public function testWhatever():void {
    var cont:EventDispatcher = new EventDispatcher();
    cont.addEventListener("continue", addAsync(verifyFirst, 1000));
    cont.dispatchEvent(new Event("continue"));
}

private function verifyFirst(e:Event):void {
    var cont:EventDispatcher = new EventDispatcher();
    cont.addEventListener("continue", addAsync(verifySecond, 1000));
    cont.dispatchEvent(new Event("continue"));
}

private function verifySecond(e:Event):void {
    assertTrue(true);
}

如果我运行此测试,则会调用verifyFirst,但不会调用verifySecond。我假设这是flexunit中的一个bug ...有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-01-01 17:57:40

我做了更多的研究,发现这确实是flexunit中的一个错误,它看起来是下一个版本中的fixed。我发现的解决方法是使用Application.application.callLater来分派第二个事件。

代码语言:javascript
复制
private function verifyFirst(e:Event):void {
    var cont:EventDispatcher = new EventDispatcher();
    cont.addEventListener("continue", addAsync(verifySecond, 1000));
    Application.application.callLater(cont.dispatchEvent,
       [new Event("continue")]);
}

这个问题的灵感来自于在Flash的事件队列中的所有内容都被处理完后,试图检查对象的状态。我发现了一种更简单的方法来实现这一点,而不需要修改EventDispatcher

当您想要处理事件队列时,在测试的第一部分结束时执行以下调用。

Application.application.callLater(addAsync(phaseTwo, 1000, [参数...]), [null]);

其中phaseTwo函数具有以下签名。

private function phaseTwo(e:Event, args:Array):void

将向e传递一个null对象。这是与addAsync兼容所必需的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/402415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档