Progression コマンド実行順序を調べてみる

via:コマンドについて色々書いてみる – Is It So Easy?

this.addCommand(
new Trace("コマンドスタート"),
function ():void{
trace("コマンド2")
this.parent.insertCommand(
new Trace("コマンド3"),
function(){
this.parent.addCommand(
new Trace("コマンド4")
);
this.parent.insertCommand(
new Trace("コマンド5")
)
}
)
trace("コマンド6");
},
new Trace("コマンド終わりよ")
);

実行結果:
コマンドスタート
コマンド2
コマンド6
コマンド3
コマンド5
コマンド終わりよ
コマンド4

はてさて。
まず、コマンド2は上から来てるコマンドの最初なので、2番目に実行されるのはOK。さらに、コマンド4がaddCommandなので、コマンド終わりの次にくるのはOK。
コマンド6は、insertCommandの次ですが、functionの中身と考えると3番目に来るらしい(ここからややこしい)。その中でさらにinsertCommandしているのでコマンド5はfunctionの最後で実行される。ここまでがひとつの Func。で、コマンド終わりよ。と表示される。

すべてが一つのaddCommand内で、insertCommandを重ねて作るやり方をよくやるんですが、これがややこしやの元凶なのか! というメモ。