JavaScriptコールバック関数の同期と非同期実行


シンクロ運転
同期(Synchronous)
:タスクが要求された場合、タスクが終了するまで待機し、次のタスクを実行します.
コードの例
function fakeSetTimeout(callback, delay) {
  callback();
}

console.log("first");

fakeSetTimeout(function() {
  console.log("second");
}, 0);

console.log("third");
コード結果
first
second
third

非同期運転
非同期
:タスクを要求するときは、タスクの終了を待つのではなく、要求されたタスクの終了時に次の操作を行います.
コードの例

console.log("first");

setTimeout(() => {
   console.log("second");
}, 3000);

console.log("third");
コード結果
first
third
second

settimeoutでTimer 3000を指定すると、
3秒後運転(X)
3秒後にcallback queue(O)を挿入
すなわち、スタック内の実行ボディが空の場合、イベントループはコールバックキューで待機しているイベントまたはメソッドをスタックに挿入します.