반응형
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 |
Tags
- typescript
- 소켓
- Algorithm
- 백준
- 알고리즘
- TCP
- 레벨 1
- 가천대
- dp
- dfs
- Node.js
- 문자열
- javascript
- 프로그래머스 레벨 2
- HTTP 완벽 가이드
- 타입 챌린지
- 프로그래머스
- socket
- 쉬운 문제
- type challenge
- 크롤링
- Nestjs
- 그래프
- HTTP
- 타입스크립트
- ip
- BFS
- Crawling
- 자바스크립트
- 수학
Archives
- Today
- Total
kakasoo
setTimeout은 call stack의 최상단에 콜백함수를 넣는가? 본문
반응형
또는, setTimeout은 call stack의 제어권을 빼앗는가?
function b () {
let i = 0;
while(true){
console.log('in');
i++;
if (i % 1000 === 0) {
new Promise((res) => {
setTimeout(() => {
console.log('ok');
}, 3000);
})
}
}
console.log('out');
}
이 함수에서 내부의 setTimeout이 있는 Promise는 동작하지 않는다. 호출 스택에 있을 b가 끝나지 않기 때문이다. setTimeout의 시간에 도달한다고 하더라도, 호출 스택이 비지 않으면 이벤트 루프는 이벤트 큐의 함수를 호출 스택으로 내보내지 않는다. 즉, setTimeout은 호출 스택의 최상단에 콜백함수를 넣지도 않고, 제어권을 뺏지도 않는다. 호출 스택이 비기 전까지 이벤트 루프는 새 함수를 넘기지 않는다.
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
JavaScript에서 변수의 이름을 알아내는 방법 (0) | 2023.02.28 |
---|---|
함수가 포함된 JSON을 parse하는 방법 (0) | 2023.02.04 |
RegExp, lookbehind (0) | 2023.01.14 |
ESM과 CommonJS의 차이 (이어서) (0) | 2022.07.17 |
ESM과 CommonJS의 차이 (0) | 2022.07.17 |