다음과 같이 첫 번째 인수에 넣는 함수를 외부에서 가져올 수도 있습니다.
const callback = () => {
console.log('2초 후에 실행됩니다.');
}
setTimeout(callback, 2000);
setTimeout() 함수를 비동기라고 하는 이유는 setTimeout() 뒤에 나오는 코드가 더 먼저 실행되기 때문입니다. 다음 코드는 얼핏 보면 콘솔에 1, (2초 기다리고) 2, 3 순서로 찍힐 것 같지만 실제로는 1, 3, (2초 기다리고) 2가 찍힙니다. 즉, 코드의 작성 순서와 실제 실행 순서가 다릅니다.
console.log(1);
setTimeout(() => {
console.log(2);
}, 2000);
console.log(3);
// 1, 3, 2