728x90
자바스크립트 비동기?
- 자바스크립트는 다른 멀티스레드 프로그래밍 언어와 다른 방식으로 비동기 동작을 처리한다.
- 멀티스레드 프로그래밍 언어 EX) Java, C++
- 처음 자바스크립트를 접하는 경우, 동작에 대한 정확한 이해가 없으면 코드의 흐름을 따라가기 어렵다.
- 자바스크립트 내부의 비동기 동작을 이해하기 위해서는 이벤트 루프 등의 개념을 알아야만 한다.
자바스크립트 엔진
- 자바스크립트 엔진은 하나의 메인 스레드로 구성된다.
- 메인 스레드는 코드를 읽어 한 줄씩 실행한다.
- 브라우저 환경에서는 유저 이벤트를 처리하고 화면을 그린다.
동기적 제어 흐름
- 동기적 제어 흐름은 현재 실행 중인 코드가 종료되기 전까지 다음 줄의 코드를 실행하지 않는 것을 의미한다.
- 분기문, 반복문, 함수 호출 등이 동기적으로 실행된다.
- 코드의 흐름과 실제 제어 흐름이 동일하다.
- 싱글 스레드 환경에서 메인 스레드를 긴 시간 점유하면, 프로그램을 멈추게 한다.
let a = 10
console.log("a : ", a)
function foo(num) {
for (let i = 0; i < 10; ++i) {
console.log(num)
}
}
foo(num)
비동기적 제어 흐름
- 비동기적 제어 흐름은 현재 실행 중인 코드가 종료되기 전에 다음 라인의 코드를 실행하는 것을 의미한다.
- 프로미스, 콜백 함수를 호출하는 함수 등은 비동기적으로 실행된다.
- 코드 흐름과 실제 제어 흐름이 다르다.
- 비동기 작업을 기다리는 동안 메인 스레드는 다른 작업을 처리한다.
let a = 10
setTimeout(function callback() {
console.log('a : ', a)
}, 3000)
console.log('Finished')
728x90
반응형
'Front-End' 카테고리의 다른 글
[React] 리액트 입문용 공부 - <벨로퍼트와 함께하는 모던 리액트> (0) | 2023.06.14 |
---|---|
[JavaScript] 자바스크립트 비동기 - 이벤트 루프 (0) | 2023.04.03 |
[JavaScript] 자바스크립트 내장 객체 (0) | 2023.03.30 |
[JavaScript] 자바스크립트 호이스팅(Hoisting) (0) | 2023.03.29 |
[JavaScript] 자바스크립트 엔진, 변수 정의 과정 (0) | 2023.03.29 |