File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Javascript
2
+
3
+ ## 자바스크립트 비동기 런타임 과정
4
+
5
+ ![ 1.png] ( https://image.toast.com/aaaabcy/post/16093411084241.png )
6
+
7
+ * Call stack
8
+ * 자바스크립트에서 수행해야 할 함수들을 순차적으로 스택에 담아 처리
9
+ * Web API
10
+ * 웹 브라우저에서 제공하는 API
11
+ * ajax나 timeout 등의 비동기 작업을 실행
12
+ * Task Queue
13
+ * callback queue라고도 하며 Web API에서 넘겨받은 callback 함수를 저장
14
+ * Event Loop
15
+ * Call stack이 비어있다면 Task Queue의 작업을 Call stack으로 옮김
16
+
17
+ ### 실제 코드 예시
18
+
19
+ ``` javascript
20
+ setTimeout (() => console .log (' async' ));
21
+ console .log (' not timeout' );
22
+
23
+ // not timeout
24
+ // async
25
+ ```
26
+
27
+ 1 . setTimeout 함수가 실행되며 Call stack에 setTimeout 함수가 추가
28
+ 2 . setTimeout 함수는 javascript 엔진이 처리하지 않고 Web API가 처리 (NodeJS의 경우 Timers 모듈이 처리) => 요청한 시간이 지나면 Task Queue로 callback 함수를 전달
29
+ 3 . ` console.log('not timeout') ` 이 call stack에 추가된 후 call stack의 ` console.log('not timeout') ` 가 실행
30
+ 4 . 자바스크립트의 Event loop는 call stack이 비어있는지 항상 확인, call stack이 비워진 것을 확인한 event loop는 task queue에 있던 callback 함수를 call stack으로 옮겨 작업 수행
31
+
32
+
33
+
34
+ ### 참고
35
+
36
+ * https://chanyeong.com/blog/post/44
37
+ * https://chanyeong.com/blog/post/33
38
+
39
+
40
+
41
+
42
+
You can’t perform that action at this time.
0 commit comments