Javascript и событийность, асинхронность, setTimeout

Javascript - событийно-ориентированный язык программирования.

function first() {
  console.log('first');
}

function second() {
  setTimeout(function() {
      console.log('second');
  }, 1000);
}

second()
first()

First - синхронная функция. Second - синхронная функция, в которой находится асинхронная функция, выполнение которой завершиться после одной секунды.

Вывод:

first

second

Почему, если first и second синхронные функции, первой завершает свою работу first?

*Является ли это особенностью языка программирования и его архитектуры, строения и работы? (или той же самой функции setTimeout).


Ответы (1 шт):

Автор решения: Vadim

В setTimeout создается асинхронная функция(через которую выводится second после 1 секунды), как ты сам и написал - она асинхронна, другими словами: она уходит на второй план ждать 1 секунду, когда на первом first(функция)

По цыфоркам = шагам, код выглядит так:

0 (()=>{ // "main"
    0.1 const first=()=>{
        5 console.log('first');
    };

    0.2 const second=()=>{
        2 setTimeout(()=>{
            7 console.log('second');
        }, 1000);
        3
    };

    1 second();
    4 first();
    6 // some
})();

Тебе нужно идти и читать про event loop, вот хорошее видео на тему, правда на английском

→ Ссылка