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

Нека разгледаме следния код:

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

Очевидно е, че първо ще се изпълни първия изход в конзолата, а след това - втория. Тоест командите на нашия код се изпълняват една след друга - в реда на тяхното подреждане в кода. Такъв код се нарича синхронен.

Нека сега разгледаме следния код:

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

console.log('2');

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

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