AS3での非同期通信を一元化する方法のメモ

休日出勤で作業中に、コードの神が脳内降臨して問題が解決したので忘れる前にメモ。

イベントリスナによる非同期処理が複雑にからむ場合、非同期処理を同期処理の中になんとか同一視して埋め込もうとするから破綻するんだ!!多分、逆に考えればいい。

あらゆる処理は非同期処理である

通常の関数のコールやtrace文みたいなものまで、同期処理は待ち時間が極小の非同期処理と解釈する。こう解釈すれば、作るべきは非同期処理をチェーンしたり、キャンセルしたりする機構と、同期処理を擬似非同期処理としてラップするクラスだけだ。

これさえ作れば全ての処理は一元的に管理できる。更に評価関数を定期的にウォッチし、条件が満たされたときにイベントをdispatchするような非同期クラスを作れば、アニメからポーズロックからローディングまでなんでも同じ記述でかける。 for文の分割や重い処理なら途中でウェイトかまして分散とかも余裕。

なんかスッキリした。これさえ作れば問題解決しそう。 commandsライブラリベースで改造すれば作業量を大幅に減らせそうだ。

コメントをどうぞ