Синхронный и асинхронный код в JavaScript
Рассмотрим следующий код:
console.log('1');
console.log('2');
Очевидно, что сначала сработает первый вывод в консоль, а потом - второй. То есть команды нашего кода выполняются по очереди - в порядке их следования в коде. Такой код называется синхронным.
Рассмотрим теперь следующий код:
setTimeout(function() {
console.log('1');
}, 3000);
console.log('2');
В данном случае команды не выполняются в порядке следования в коде: первый вывод в консоль выполнится, когда приходит его время, но остальной код не ожидает этого момента, а продолжает выполнятся. Такой код называется асинхронным.
Асинхронный код возникает в JavaScript достаточно часто: при работе с таймерами, при привязке обработчиков событий, при загрузке картинок, при работе с технологией AJAX, позволяющей загружать части страницы с сервера, при работе с NodeJS, представляющим собой серверный JavaScript.