メカニズムevent-loopの実行(イベントポーリング)
702 ワード
JAvascriptはなぜ単一スレッドなのか
複雑さを避けるために(たとえば、あるDOMノードに1つのスレッドがコンテンツを追加し、別のスレッドがこのノードを削除した場合、ブラウザはどのスレッドに準拠しますか?)html 5ではJavaScriptスクリプトで複数のスレッドを作成できますが、サブスレッドはメインスレッドによって完全に制御され、DOMは操作できません.したがって,JavaScript単一スレッドの本質は変わっていない.
タスクキュー(task queue)
同期(synchronous)
メインスレッドに並んでいるタスクは、bタスクがaタスクの後ろに並んでいる場合は、aが完了してからbタスクを実行するしかありません.
非同期(asynchronous)
aは非同期呼び出しapiメソッドで、メインスレッドが実行されると、サーバに要求されます.aのコールバックは直接タスクキューに配置され、メインスレッドはメインスレッドの同期タスクがすべて完了するまで下に実行され、タスクキューから非同期タスクが呼び出されます.
参照元JavaScript実行メカニズムの詳細:Event Loopについて
複雑さを避けるために(たとえば、あるDOMノードに1つのスレッドがコンテンツを追加し、別のスレッドがこのノードを削除した場合、ブラウザはどのスレッドに準拠しますか?)html 5ではJavaScriptスクリプトで複数のスレッドを作成できますが、サブスレッドはメインスレッドによって完全に制御され、DOMは操作できません.したがって,JavaScript単一スレッドの本質は変わっていない.
タスクキュー(task queue)
同期(synchronous)
メインスレッドに並んでいるタスクは、bタスクがaタスクの後ろに並んでいる場合は、aが完了してからbタスクを実行するしかありません.
非同期(asynchronous)
aは非同期呼び出しapiメソッドで、メインスレッドが実行されると、サーバに要求されます.aのコールバックは直接タスクキューに配置され、メインスレッドはメインスレッドの同期タスクがすべて完了するまで下に実行され、タスクキューから非同期タスクが呼び出されます.
var req = new XMLHttpRequest();
req.open('GET', url);
req.onload = function (){};
req.onerror = function (){};
req.send();
参照元JavaScript実行メカニズムの詳細:Event Loopについて