동기
스레드 : 코드를 한 줄 한 줄 실행시킴
스레드 - 동기방식 처리 : 이전 작업이 진행 중 일 때는 다음 작업을 수행하지 않고 기다린다.
자바스크립트는 싱글 스레드 !
function taskA() {
console.log("A 작업 끝");
}
taskA();
console.log("코드끝");
// 동기적 방식
비동기
싱글쓰레드 방식을 이용하면서, 동기적 작업의 단점을 극복하기 위해
여러 개의 작업을 동시에 실행시킴
function taskA() {
setTimeout(() => {
console.log("A Task End");
}, 2000); //2초 뒤 실행
}
taskA(); //먼저 명령했지만 2초 뒤 실행
console.log("코드끝"); //먼저 실행
//코드끝
//A Task End
//비동기적 방식
비동기 + 콜백
function taskA(a, b, cd) {
setTimeout(() => {
const res = a + b;
cd(res);
}, 3000);
}
taskA(3, 4, (res) => {
console.log("A Task result : ", res); //콜백함수 전달
});
console.log("코드끝");
//코드끝
//A Task result : 7
JS Engine : Call stack
가장 나중에 들어온 것이 가장 먼저 제거됨
main context가 제거되는 순간이 프로그램이 종료되는 시점
비동기코드는 Web APIS > Callback Queue > Event Loop > Call Stack 순서로 실행