2012-10-08 12 views

答えて

8

ブラウザ実行モデルは、「イベントループ」の概念に基づいています。イベントにサービスを提供するスレッドは1つだけです(少し過度の単純化)。イベントが発生すると、ハンドラが順番に呼び出されます。

Ajaxは、特定のイベントを引き起こす単なるメカニズムです。 HTTPリクエストを設定することは同期的ですが、設定するだけです。ブラウザは、発生したときにイベントをトリガすることによって、サーバからの戻りデータを表すネットワーク通信に応答します。

現代のブラウザは、各ウィンドウが独自のプロセス(または一般的なシステムレベルの「スレッド」構造)を持つ可能性があるという点で、やや複雑です。また、新しい「Webワーカー」機能により、別々のスレッド状コンパートメントを同時に実行することができます。

+0

+1、完全な答え、明確かつ簡潔です。ほんの1つの追加:ある意味では、JS実装はシングルスレッドであり、実際にはブラウザ固有のものです。しかし、これまでのところ、私が知っているJSの実装はマルチスレッドをサポートしていません。理論的には可能ですが、面白いことですが、JSは(マルチスレッド)開発のコア概念を実際に理解していないpplによって使用されているという事実と、実際にJSを書く多くの人が、言語。正直言って、Cthuluの上昇は、アマチュア製作現場にサーフィンすることと比べてピクニックのように見えるでしょう。しかし、無礼ではありません。 –

+0

アマチュアプログラミングは素晴らしいです。私たちは皆、そんなことを始めましたが、最初から真剣なツールがあれば、自分たちのマシンに何ができるか考えてください。ウェブ上では、あなたが破壊しているのはあなたのマシンだけではありません。基本的には、JSをそれにしましょう。簡単なことですが、探している人にとっては非常にきれいな構造です。閉じ込め、ラムダ、デリゲーション、スコープなどを学ぶまで、スレッディングが待つことを学ぶことが大いにあります。 –

+2

@EliasVanOotegemありがとう!よく「Webワーカー」は、コードがページ(および他のワーカー)のコードと同時に実行されるように実装できますが、スレッド間通信モデルは非常に厳密にメッセージベース(Erlangプロセスのように)ですので比較的安全です。 – Pointy

関連する問題