(비동기 원리를 설명하기 위해 callback함수(cb)를 사용)
function taskA(a, b, cb) {
setTimeout(() => {
const res = a + b;
cb(res); // 주의!
}, 3000);
}
function taskB(a, cb) {
setTimeout(() => {
const res = a * 2;
cb(res); // 주의!
}, 100);
}
taskA(1,2, (res) => {
console.log("A TASK RESULT : ", res);
});
taskB(2, (res) => {
console.log("B TASK RESULT : ", res);
});
//result
B TASK RESULT : 4
A TASK RESULT : 3
Javascript는 단일 스레드 방식이다.
단일 스레드란 동작을 한가지만 처리한다는 뜻이다.
그럼 단일 스레드인 Javascript가 어떻게 비동기 방식을 실행시킬수 있을까?
Web APIs에 있던 작업은 cb(callback)을 Callback Queue로 옮겨준뒤 event loop를 통해 call stack으로 옮겨준다.
cb의 이동: Web APIs -> Callback Queue -> call stack