擬Ajax (Pseudo-Ajax) ; 同期と非同期の折衷について

現在、これまでのログをまとめて、JavascriptYUI)とPHP5でアプリを作るためのツールを作成している。JavascriptPHPなので、個人ユースを想定して、縛りの緩いライセンス(AL2.0)でダウンロードできるようにしたいと考えている。

実地で使いそうなサンプルを作りながら、このブログに掲載してきた基本的なツールをリファイン(??)しているのだが、Ajaxを使うことで、これまでのMVC2が随分と変わってしまうな、と改めて実感している。

もっとも戸惑っているのが、Ajaxと一連の処理フローとの関係。
コンピュータ・システムの挙動は、(人間の作業手順に従って)基本的にはシリアルであることを想定するべきだと思う。これは、ほぼ、同期(Synchronize)と同義であって、Ajaxでいう非同期(Asynchronize)と齟齬がでてしまう。非同期の「良さ」を取りながら、シリアルな作業をシステム化するというのは、(矛盾があるとは言わないが)難しい作業だと思う。

人の行う作業は、「次、次、次」と進むが、これは、「(結果を待って)次、(結果を待って)次、(結果を待って)次」ということだから、これと非同期を折衷させる部分(つまり、非同期を、同期的な作業に無理やり合わせこんでいく)という「ごり押し」が発生する可能性がある。
そうすると、非同期であることが、逆に「たが」になってしまってうまくない。
Ajaxライブラリーも、ある程度、こういう使い方を想定して実装されてるが、プログラミング的には、スコープがあちこち飛んでしまって、むずかしげになってしまう。

こういう設計を「擬Ajax」と呼んでみたい。

Ajaxを世に知らしめた「Google Map」のような使い方が理想的と思うのだが、そういうアプリもそうは多くないと思う。
「擬Ajax」を回避する設計とはどういったものなのか? 同期と非同期の「適切な組み合わせ」はどういった基準によるのか?

考え込まされている。