Código Síncrono e Assíncrono em JavaScript
Considere o seguinte código:
console.log('1');
console.log('2');
É óbvio que o primeiro console.log será executado primeiro, e depois - o segundo. Ou seja, os comandos do nosso código são executados um por um - na ordem em que aparecem no código. Esse tipo de código é chamado síncrono.
Agora, considere o seguinte código:
setTimeout(function() {
console.log('1');
}, 3000);
console.log('2');
Neste caso, os comandos não são executados na ordem em que aparecem no código: o primeiro console.log será executado quando chegar o momento dele, mas o resto do código não espera por esse momento, e continua a ser executado. Esse tipo de código é chamado assíncrono.
O código assíncrono surge em JavaScript com bastante frequência: ao trabalhar com temporizadores, ao vincular manipuladores de eventos, ao carregar imagens, ao trabalhar com a tecnologia AJAX, que permite carregar partes de uma página do servidor, ao trabalhar com NodeJS, que representa o JavaScript do lado do servidor.