Dav*_*ver 2 apache-flex actionscript asynchronous flex3 actionscript-3
在ActionScript中调度事件时:
foo.addEventListener("some event", someHandler);
foo.dispatchEvent(new Event("some event"));
Run Code Online (Sandbox Code Playgroud)
事件处理程序在什么时候执行?
我问,因为我在Adobe开发者指南的末尾发现了这个:
请注意,在调用远程服务后,会将某些属性分配给[AsyncToken].在多线程语言中,将存在竞争条件,其中结果在分配令牌之前返回.这种情况在ActionScript中不是问题,因为在当前正在执行的代码完成之前无法启动远程调用.
但我找不到任何有关"当前执行代码"的含义的信息.
如果dispatchEvent()使用ActionScript 调用,处理程序将立即执行.首先根据您调用时指定的优先级确定addEventListener()订单,然后根据优先级相同的顺序确定订单.先到先得.
如果从Flash Player内部调度事件,例如Event.COMPLETE从URLLoader实例或需要网络通信的任何其他事件调度,则在ActionScript运行时将不会调度该事件.它排队等待以后.我想这正是为了避免文档中描述的竞争条件.我相信已经观察到"后来"是下一帧,但它可能发生在当前帧的所有其他ActionScript运行之后.