イベントループ(日付48 TIL)


「車輪の再発明」


開発を学び始めてから、車輪の再発明という言葉をよく耳にする.既存のライブラリやフレームワークを再作成しないでください.勉強の過程で、鬱陶しくても、既存の「車輪」を再発明する必要がある時もある.これは、既存のコンテンツをよりよく理解し、利用するためです.
ブログの記録の過程も似ています.学習活動のサイクルで多くの助けを得た文章イメージこのように整理された資料があっても、ブログを作るのは自分が勉強して、自分になるためです.

ソース:https://blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf

シングルスレッド


JavaScriptはsingle threadという言葉があります.みんながたくさんの資料を聞いたことがあると言っていたので、最初は少し慌てていました.一度に一つの処理を理解しておく
では、一度に何を処理しますか.もちろんハーモニーですよね?JavaScriptエンジンはMemory HeapとCall Stackで構成されており、Heapには宣言された変数または関数が含まれており、コード実行中にCall Stackを使用して処理されます.
함수 선언 1
함수 선언 2
함수 선언 3

함수 1(함수 2(함수 3));
3つの異なる関数を宣言し、関数2を関数1のパラメータとし、関数3を関数2のパラメータとすると仮定します.これは、関数1からcallスタックに積み重ねられ、関数3に至るまで順次解析され、スタックから消えることを意味する.
1つのcallスタックしか処理できないため、JavaScriptをシングルスレッドと呼ぶ.

非同期関数はどこですか?


JavaScriptエンジン以外で非同期で実行されるアクションがあります.もう一度カフェの例を挙げてみましょう
従業員2名がオーダーを受けている職員と飲み物を作っている職員がいますでは、注文を受けた従業員が注文を受けた後、飲み物を作った従業員にこのような注文を伝えます.従業員が1人いれば、1人で注文と飲み物の作成を済ませなければならないので、時間はかかりますが、従業員が2人いれば、仕事を区別して行うことができます.次のお客様の注文処理を引き続きお手伝いします.
非同期もそうです.外部からデータを受信する必要がある場合は、タスクは先に外部に移行し、完了してから移行します.これがCalback Queueです.は、非同期で実行されるコールバック関数を保存する領域です.

イベントループ


今日のTILのテーマはイベントループイベントループは、コールバックスタックとコールバックキューをチェックします.コールバックスタックが空の場合、コールバック関数はコールバックキューに順次返されます.loopという言葉に示すように、イベントループはこのプロセスを繰り返します.
一連のプロシージャによって非同期で実行される操作は、呼び出しスタック内のすべての操作が実行された後にのみ実行されます.しかし、私たちは他の任務を放棄し、待つ必要がある過程を無視したため、より良い演技体験を提供することができます.
コールバックキューは、複数のキューを含む表現であることに注意してください.コールバックキューは、Taskキュー、MicroTaskキュー、Animation Framesに分けられ、MicroTask=>Animation=>Taskの順にイベントループとして使用されます.

その他参考になる資料。


https://velog.io/@thms200/Event-Loop-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84
http://sculove.github.io/blog/2018/01/18/javascriptflow/