做了一个试验,测试能否在另外的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