[Javascript] 동기와 비동기

2024. 5. 23. 09:09Javascript

728x90


프로세스 내에서 실행되는 흐름의 단위를 스레드라 함

 

동기적 처리

 

여러개의 작업을 순서대로 한 번에 한 개씩 처리하는 것


단점: 작업 중간에 있는 하나의 작업이 너무 길때 스레드는 끝날 때까지 다음 작업으로 넘어갈 수 없어 전체 성능이 악화

 

→ 보완하기 위해 멀티쓰레드 기법 사용

    여러개의 스레드로 각 작업이 실행되기 때문에 한 개가 오래 걸려도 전체 프로그램 성능에 큰 영향을 안 줌

 

 

그럼 비동기 처리는 왜 배움?

 

자바스크립트 엔진에는 스레드가 1개만 존재 →멀티스레드 기법이 불가능

 

→ 보완하기 위해 비동기처리 사용

 

 

자바스크립트는 기본적으로 동기적 처리

 

console.log(1);
console.log(3);

 

→ 결괏값

    1
    3

 

 

비동기적 처리

 

 

여러 개의 작업을 순서대로 처리하지 않음, 기다리지 않고 다른 작업 동시에 처리

 

자바스크립트 스레드 1개라면서 어떻게 비동기가 가능?

 

→ 비동기 작업은 자바스크립트 엔진에서 실행 X → Web APls(웹 브라우저가 직접 관리하는 별도의 영역)에서 실행

 

 

 

 setTimeout(() => {}, 특정시간(초))

 

사용해서 비동기 처리 가능

 

console.log(1);

setTimeout(() => { console.log(20); }, 5000);
console.log(3);

→ 결괏값

    1
    3

    20 → 실제 콘솔 보면 1,3 먼저 출력되고 5초 후에 20 출력

 

 

728x90