9

たとえばタイマーで何らかのアクションを実行するJavaScriptコードを実行していて、このコードがWebブラウザーのタブ1とタブ2のWebページに埋め込まれている場合、クライアントコードを同時に実行できますか?または、JavaScriptクライアントコードは常に単一のブラウザスレッドでのみ実行されますか?

あるいは、親フレームと子フレームを持つフレームセットがある場合、この状況でjavascriptコードを同時に実行できますか?

標準で指定されたモデルはありますか、それともブラウザに依存しますか?

私の主なターゲット環境はIE9なので、そこで何が起こっているのか知りたいと思います。

編集私はスレッドのサポートやjavascriptでスレッドを行う方法を探していません。個人的にはその必要性はわかりません。それはまた、人生をより複雑にします。心配する必要があるかどうか、もしそうならどのブラウザで心配する必要があるかを知りたいだけです。

4

1 に答える 1

6

単一のJavaScript「オブジェクトスペース」(ブラウザーの単一ページまたはnode.jsのインタープリターインスタンス)の場合、実行されているスレッドは最大で1つです。実際、JavaScriptのコンテキストでスレッドについて話すことは意味がありません。JS実行モデルは、イベントループとコールバックに基づいています。

異なるフレームは、互いのDOM(および拡張により任意のオブジェクト)にアクセスできるため、同時に実行することはできません。これにより、スレッド化が安全でなくなります。

Webワーカーでは、ワーカーの境界を越えてデータ構造に直接アクセスできないため、スレッド化は監視できず、安全に発生する可能性があります。ここでの唯一の通信は、メッセージパッシングを介したものです。

于 2013-03-24T11:59:11.963 に答える