1

JavaScript が作成している「スレッド」を確認する方法はありますか? たとえば、DOM 要素にアタッチされたイベント ハンドラーがある場合、JavaScript は暗黙的に新しいスレッドを作成してそのコードをバックグラウンドで実行すると思いますか? もしそうなら、JavaScript が開いているさまざまな「スレッド」を (Firebug、WebKit インスペクターなどを介して) 確認する方法はありますか? (そして、JavaScript が使用しているのがスレッドでない場合、イベント ハンドラーは「舞台裏」でどのように機能するのでしょうか?)

4

4 に答える 4

4

JavaScript はスレッドを作成しません。基盤となるブラウザーは、独自のスレッド化された環境でイベントを処理し、JavaScript インタープリターにハンドラーを実行させている可能性がありますが、JavaScript にはスレッド アクセスがなく、ブラウザーの動作は実装によって異なります。

于 2012-07-25T23:45:41.887 に答える
2

JavaScript は新しいスレッドを作成せず、ブラウザーで実行されます。この情報を実際に見ることはできません。プロファイラーを使用できますが、それがあなたの質問に答えているかどうかはわかりません

于 2012-07-25T23:45:05.493 に答える
0

JavaScriptは「シングルスレッド」であり、すべての実行は線形です(ただし、基盤となるエンジンがどのように機能するかはわかりません)。

非同期アクションはイベントベース(DOMイベント、Ajax呼び出し、WebWorkers)であるため、ハンドラーの実行はスケジューラーキューに追加されます。現在の実行が終了したときにのみ実行されます。そのため、無限ループを外部から停止することはできません。無限ループはブラウザをフリーズさせるだけです(最終的にはlong-running script例外をスローします)。

タイムアウト(W3Timer仕様)でも同じで、アクティブなタイマーのリストにタスクを追加します。このようなタスクキューの詳細については、Web-AppAPIの処理モデル仕様を参照してください。

于 2012-07-25T23:55:39.583 に答える
0

このツールを使用して、目的が達成されるかどうかを確認してください: Visual Event

于 2012-07-25T23:47:57.377 に答える