[Node.js] Section#2 요약
2025. 5. 10. 01:00ㆍprogramming/Node.js
호출 스택: 함수가 실행되는 순서를 관리하는 자료구조
- LIFO 방식으로 동작
- 자바스크립트 엔진은 싱글 스레드로 동작하기 때문에, 호출 스택이 비어야만 테스크 큐에 대기 중인 콜백이 실행된다.
- 스택이 바쁘면(즉, 함수 실행이 끝나지 않으면) 비동기 작업의 콜백도 대기 상태로 머뭅니다.
*Anonymouse는 가상의 전역 컨텍스트로 파일이 시작(실행)될 때 생기고 파일(실행)이 끝나면 사라짐 => js코드실행종료 (항상 호출 스택에 존재한다고 보면 된다. )
이벤트루프: 호출스택이 비어있을 때 테스크 큐에 남아있는 작업을 호출스택으로 옮겨주어 실행되게 한다.
function run(){
console.log("3초 후 실행");
}
console.log('시작');
setTimeout(run,3000);
console.log('끝');
- 실행 순서 분석: Anonymouse 호출스택 IN > 메모리에 run()선언 됨 > 호출스택에 console.log('시작') IN > '시작' 출력 > console.log() OUT > SetTimeout() IN > SetTimeout이 Background에 실행할 내용을 보냄 '타이머(run, 3초)' > console.log('끝') IN > '끝' 출력 > console.log() OUT > Anonymouse 호출스택에서 OUT > Background에 남아있는 타이머가 3초가 끝나면 테스크 큐로 보내짐 > 이벤트루프가 호출스택이 비어있는 것을 확인하고 테스크 큐의 run()함수를 호출스택으로 옮김 > run()실행 > console.log('3초 후 실행') IN > '3초 후 실행' 출력 > console.log() OUT > 파일 실행 완료
*비동기함수는 백그라운드에 실행할 내용을 보낸다.
*SetTimeout보다 Promise.then/catch가 우선순위 높음
화살표함수
this값에만 주의하자. function은 호출하는 대상에따라 this값이 바뀌지만(this값이 비고정적임), 화살표 함수는 부모의 this값을 상속 받는다(this값 고정됨) 결론, this를 쓸거면 function, 안써도 되면 화살표 함수로 통일하자!
클래스
Promise, async/await
'programming > Node.js' 카테고리의 다른 글
[Node.js] Section#1 요약 (0) | 2025.05.09 |
---|---|
Node.js ) bcrypt를 이용해 패스워드 암호화하기 - 1 (0) | 2020.11.28 |
Node.js(express.js) 회원가입 (0) | 2020.11.28 |
Node.js x 몽고DB(MongoDB) Schema 정의하기 (0) | 2020.11.26 |
Node.js에 몽고DB연결하기 (feat. Mongoose) (0) | 2020.11.26 |