AS3.0事件侦听优先级确定的方法是按顺序线性执行么

  AS3.0事件侦听优先级确定的方法是按顺序线性执行么?事后才觉得问这个问题挺白痴的(遭到同事鄙视。。。),脚本执行,不涉及资源加载和远程调用,哪来的异步呢。。。。

  结论是线性执行,不论优先级高的那个方法要执行多久,后面的都会等着,这也提醒我们某个事件处理逻辑和算法写得不要过于复杂,否则会耽误后面的侦听函数执行。所有的侦听函数都被放在EventDispatcher的一个listeners数组里,不过应该是private的,开debug模式强行输出可以看到一些内容。有兴趣的继续看吧:

  我被绕进去,是来源于这段话:“给一个对象注册多个监听器,即使每个监听器的优先级别不同,但也无法保证后一个执行时前面的监听函数已经执行完毕。设计时,后面的函数不应该以前者执行完毕为条件。”---来源于Flex学习笔记_08 Flex的事件机制_高级应用

测试代码如下:  

 public class TestEvent extends Sprite

        {
                private var num:Number = 0;
                public function TestEvent()
                {
                        var testNum:int = 0;
                        for(var i:int = 0; i < 1000000; i ++){
                                testNum += i;
                        }
                        trace("the final num is:" + testNum);
                        initListener();
                        
                }
                private function initListener():void{
                        stage.addEventListener(MouseEvent.MOUSE_DOWN,func2,false,2);
                        stage.addEventListener(MouseEvent.MOUSE_DOWN,func3,false,3);
                }
                private function func2(event:MouseEvent):void{
                        trace("when do fun2,the num is:"+num);
                }
                
                private function func3(event:MouseEvent):void{
                        trace("func3 begin,the num is:" + num);
                        for(var i:int = 0; i < 1000000; i ++){
                                num += i;
                        }
                        trace("func3 complete,the num is:"+num);
                }
输出结果如下:
the final num is:1783293664
func3 begin,the num is:0
func3 complete,the num is:1783293664
when do fun2,the num is:1783293664

参考资料:

AS里事件到底是异步执行还是同步执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值