ファセット研究-3イベントサイクル
Event Loop
single thread
スレッド(thread)とは、任意のプログラム、特にプロセス内で実行されるストリームの単位を指す.
JavaScriptの大きな特徴は「単一スレッド」に基づく言語です.
1つのスレッドは、同時に1つのタスクしか処理できないということです.しかし、実際にはJavaScriptを使用する環境を考慮すると、多くのタスクが同時に処理されていることがわかります.
例えば、Webブラウザは、マウス入力を受信して処理し、アニメーション効果を表示します.jsベースのWebサーバは、複数のHTTP要求を同時に処理することができる.
JS Engine
JavaScriptエンジンはMemory HeapとCall Stackで構成されています.(図左)
最も有名なのはグーグルのV 8エンジンです.
JavaScriptは単一スレッドプログラミング言語です.
これはCallStackが一体であることを意味します.
コールスタック
JavaScriptエンジンはMemory HeapとCall Stackで構成されています.
MemoryHeapはメモリ割り当てが発生する場所で、プログラミング時に宣言した変数、関数などが含まれています.
Call Stackはコード実行時にスタックされる場所で、Stackの形でスタックされます.
StackはLIFO先入後出,すなわち最後に入るのが先出の構造である. function test () {
}
コールバック関数
別の関数パラメータに渡す関数
コールバック受信関数による特定の時点での実行
同期コールバックの場合は、すぐに呼び出します.
非同期コールバックの場合は、後で条件を満たすときに実行します.
イベントリスナー
タイマ/XMLHttpRequestリクエスト
Web API
Web APIはブラウザが提供するAPIであり、Call Stackで実行される非同期関数はWeb APIを呼び出す.
Web APIはコールバック関数をCallback Queueに入れます.
私たちがよく使うsettimeoutやAJAXなどの非同期呼び出しやイベントは、Web上で操作することができます.
Callback Queue / Task Queue
非同期コールバック関数を含む領域
Queue資料構造はFIFO構造を採用し、先に入ってから出る.
Event Loop
Event LoopはCall StackとCallback Queueの状態をチェックします.
Call Stackが空の場合、Calback Queueの最初のコールバックがCall Stackにプッシュされます.
このような繰り返しの行為を滴答と呼ぶ.
オペレーションプロセス
コードが
function test () {
}
スタックに積み重ねられたすべての関数が実行されます.
△このような繰り返しの行為を滴答と呼ぶ.
整理する
JavaScriptは、単一スレッドベースの非同期動的言語です.
Memory Heap:メモリ割り当ての場所
Call Stack:実行コード環境のデータ構造を格納し、関数呼び出し時にCall Stackにプッシュされます.
Event Queue:Web APIにおける非同期コードのシーケンス格納構造
Web API:DOM、AJAX、settimeoutを含むブラウザが提供するAPI
Event Loop:Calback Event Queueから1つずつ取り出して動作させるLoopをEvent Loopと呼びます.
Reference
この問題について(ファセット研究-3イベントサイクル), 我々は、より多くの情報をここで見つけました https://velog.io/@woals3000/면접스터디-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol