Flash actionscript3.0 多个setTimeout之间会顺序执行 单线程执行 无法中止

做了一个试验,测试能否在另外的setTimeout中中断其他代码的执行。结果表明,是不可能的,Actionscript会按顺序,逐个逐个的执行。

private var index:int;
private var stop:Boolean = false;

public function EffectTest()
{
       setTimeout(run, 200);
       setTimeout( function():void
       {
               trace("try to terminate running");
              stop = true;
       }, 500);
       setTimeout( function():void
       {
               trace("index is", index);
       }, 600);
}

protected function run(): void
{
        //this loop needs 1.3s to finish
        for (var i:int = 0; i < 10000000; i++)
       {
               if (stop)
              {
                     index = i;
                      trace("running has been terminated");
                      return;
              }
               var a:Number = Math.sqrt(i);
       }
       index = i;
        trace("finish running");
}

 




如果第二个setTimeout能中止的话,应该输出running has been terminated

但实际运行结果,这部分是没有执行的。run函数还是好好的完全被执行完。
最终输出:
finish running
try to terminate running
index is 10000000

转载于:https://www.cnblogs.com/kenkofox/p/3197862.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值