2016-10-13 00:16:48 点击量:13 标签: 收藏本文
做了一个试验,测试能否在另外的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)
- {
- iindex = i;
- trace("running has been terminated");
- return;
- }
- var a:Number = Math.sqrt(i);
- }
- iindex = i;
- trace("finish running");
- }
如果第二个setTimeout能中止的话,应该输出running has been terminated
但实际运行结果,这部分是没有执行的。run函数还是好好的完全被执行完。
最终输出:
finish running
try to terminate running
index is 10000000