Синхронный и асинхронный код в JavaScript

Рассмотрим следующий код:

javascriptconsole.log('1');
console.log('2');

Очевидно, что сначала сработает первый вывод в консоль, а потом - второй. To есть команды нашего кода выполняются по очереди - в порядке их следования в коде. Такой код называется синхронным.

Рассмотрим теперь следующий код:

javascriptsetTimeout(function() {
  console.log('1');
}, 3000);

console.log('2');

В данном случае команды не выполняются в порядке следования в коде: первый вывод в консоль выполнится, когда приходит его время, но остальной код не ожидает этого момента, а продолжает выполнятся. Такой код называется асинхронным.

Асинхронный код возникает в JavaScript достаточно часто: при работе с таймерами, при привязке обработчиков событий, при загрузке картинок, при работе с технологией AJAX, позволяющей загружать части страницы с сервера, при работе с NodeJS, представляющим собой серверный JavaScript.