반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 대전맛집
- 리사이클러뷰
- 타입스크립트
- 알고리즘
- 분리집합
- 우선순위큐
- node.js
- 자바스크립트
- 백준
- 몰입캠프후기
- 궁동
- BFS
- 어은동맛집
- nodeJS
- 카이스트맛집
- 프래그먼트
- 위상정렬
- 후기
- 안드로이드스튜디오
- html
- 앱개발
- MySQL
- 몰입캠프
- 자바
- 컴퓨터그래픽스
- computergraphics
- glfw
- DP
- 카이스트
Archives
- Today
- Total
소근소근
[Javascript] 자바스크립트에서의 비동기(asynchronous) 동작 본문
728x90
반응형
SMALL
기본적으로 자바스크립트는 단일 스레드이며 동기적(synchronous)이다.
동기적이라는 것은 어떠한 작업이 실행되고 있다면 다른 작업은 멈춘 상태에서 기다리는 것을 말한다.
비동기 동작
비동기적으로 동작하는 것도 필요하다.
비동기적이라는 것은 어떠한 요청을 보내고 이 요청이 처리되는 것을 끝날때까지 기다리는 것이 아니라 바로 다음 작업이 실행되는 것을 말한다.
console.log('Hello');
setTimeout(function hi(){
console.log('async');
},3000);
console.log('Bye');
먼저 , console.log('Hello')가 실행이 되고, 콜 스택에 쌓였다가 콘솔에 Hello가 출력된다.
출력 후에는 스택에서 사라지고 , 스택에는 setTimeout이 들어간다.
setTimeout()은 브라우저에서 제공하는 WEB API이다. 즉, 자바스크립트가 실행되는 런타임 환경에서 별도의 API가 존재한다는 것이다.
WEB API에서 카운트다운을 하게되고, 스택에서 setTimeout은 사라진다.
그리고 console.log('Bye')가 콜 스택에 추가되고, 콘솔에 출력후 스택에서 사라진다.
타임아웃이 되고, WEB API는 hi함수(callback)을 callback queue에 넣는다.
이제 이벤트 루프가 동작할 차례이다.
이벤트 루프(event loop)는 call stack이 비어있다면, callback queue의 앞에서부터 보면서 stack에 쌓아 실행될수 있게 한다.
즉, 현재 스택이 비어있고 , callback queue에는 hi()가 있으므로 이벤트루프는 이를 stack에 넣게 된다.
비로소 콘솔 창에 async가 출력된다.
728x90
반응형
LIST
'HTML,CSS,Javascript' 카테고리의 다른 글
[Javascript] How Javascript works? 자바스크립트의 동작 원리 , 엔진, 런타임 , 호출 스택 (0) | 2021.09.08 |
---|---|
[Javascript] object reference , shallow / deep cloning 객체 참조 복사 / 값 복사 (0) | 2021.09.07 |
[HTML] div, span 태그 차이 (0) | 2021.08.18 |
[HTML] form tag 예제 (5) | 2021.08.18 |
[HTML] form 태그 method 속성 (2) | 2021.08.18 |