JavaScript는 싱글 스레드(하나의 프로그램은 동시에 하나의 코드만 실행할 수 있다.) 런타임을 가지는데 이것은 결국 한번에 하나의 싱글 콜 스택만을 가지고 있다는 의미이다.
function multiply(a, b) {
return a * b;
}
function square(n) {
return multiply(n * n);
}
function printSquare(n) {
var squared = square(n);
console.log(squared);
}
printSquare(4);
blocking이라는 것에 대한 정확한 정의는 존재하지 않는다. 그저 느리게 동작하는 코드이다.
e.g.
console.log는 느리지 않지만 while 루프 안에서 수십억번 실행된다면 느리다.
e.g.
// 동기적으로 실행된다면
let foo = $.getSync('//foo.com'); // 기다리고..
let bar = $.getSync('//bar.com'); // 기다리고..
let qux = $.getSync('//qux.com'); // 기다린다..
console.log(foo);
console.log(bar);
console.log(qux);