동기 & 비동기
자바스크립트의 싱글 스레드 작업 수행 방식
자바스크립트는 코드가 작성된 순서대로 작업을 처리한다.
이전 작업이 진행 중 일 때는 다음 작업을 수행하지 않고 기다린다.
먼저 작성된 코드를 먼저 다 실행하고 나서 뒤에 작성된 코드를 실행한다.
이와 같은 방식을 동기 방식의 처리라고 한다.
동기처리 방식의 문제점
동기적 처리의 단점은 하나의 작업이 너무 오래 걸리게 될 시 ,
모든 작업이 오래 걸리는 하나의 작업이 종료되기 전 까지 올 스탑 되기 때문에 , 전반적인 흐름이 느려진다.
멀티 쓰레드
멀티 쓰레드는 코드를 실행하는 일꾼 Thread를 여러 개 사용하는 방식인 'MultiThread' 방식으로
작동시키면 이런 식 으로 작업 분할이 가능하다.
하지만 자바스크립트는 싱글 쓰레드 방식으로 동작하기 때문에 멀티 쓰레드 방식은 사용이 불가능 하다.
비동기 작업
싱글 쓰레드 방식을 이용하면서, 동기적 작업의 단점을 극복하기 위해 여러 개의 작업을 동시에 실행 시킨다.
즉, 먼저 작상된 코드의 결과를 기다리지 않고 다음 코드를 바로 실행한다.
이러한 방식은 우리는 비동기 작업 방식이라고 부른다.
동기적 방식
<script>
function taskA() {
console.log("A 작업 끝");
}
taskA();
console.log("코드 끝");
</script>
비동기 방식
자바스크립트에는 setTimeout이라는 타이머를 만들 수 있는 내장 비동기 함수가 존재한다.
<script>
function taskA() {
setTimeout(() => {
console.log("A 작업 끝");
}, 2000);
}
taskA(); // 2초 뒤 실행
console.log("코드 끝"); // 먼저 실행
</script>