Javascript 동작원리 (Single thread, Event loop, Asynchronous)
Medium
싱글 스레드 기반 javascript 가 비동기적 논블로킹 IO 를 지원하는 배경에는 javascript 엔진을 구동하는 런타임환경(브라우저, node.js)의 이벤트 루프와 관련이 있다는 사실은 들어봤지만, 자세히는 살펴보지 못한것 같아 2번에 나누어 좋은 포스팅 글을 요약해보고자 합니다
참고문헌
https://medium.com/@vdongbin/javascript-%EC%9E%91%EB%8F%99%EC%9B%90%EB%A6%AC-single-thread-event-loop-asynchronous-e47e07b24d1c
https://vimeo.com/96425312
요약
자바스크립트 의 동작
자바스크립트는 하나의 콜스택과 매인스레드를 가지고 있습니다
함수 호출에 의한 실행 컨텍스트가 콜스택에 쌓이게 되고 LIFO 방식으로 실행됩니다.
자바스크립트 런타임에서는 비동기 API를 지원하지 않습니다
자바스크립트의 비동기 지원 방식
자바스크립트 런타임 내에서는 지원하지않지만, 자바스크립트 엔진을 구동하는 런타임(브라우저, node.js)환경에서 동시성을 보장하는 비동기, 논블로킹 작업들을 담당합니다.
크게보면 콜스택, webAPI, 테스크 큐의 순환의 이벤트 루프를 통해 자바스크립트와 외부 환경의 상호 작용이 진행됩니다.
(자세히 들어가면 테스크 큐의 경우 6단계가 존재하는데, 이는 다음에 다뤄보도록 하겠습니다)
비동기 작업들을 webAPI(nodejs 는 nodejsAPI) 환경에서 처리해 준 다음, 테스크 큐로 콜백함수를 넘겨줍니다.
만약 작업을 webAPI로 위임하지 않는다면, 비동기작업이 완료될 때 까지 자바스크립트는 어떠한 작업도 수행할 수 없습니다. (블로킹)
비동기 작업에 한한 순서는 콜스택 -> webAPI -> 테스크 큐 -> (비어있다면) 콜스택
이러한 이유로, 만약 setTimeout API를 사용할 경우, 정확하게 지정한 시간 이후 콜백함수가 실행되지 않을 수 있습니다. 테스크 큐 내 콜백 함수가 실행되려면 콜 스택이 비어 있어야 하기 때문입니다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 12월 4일 오전 12:39
✅️Prompting Guide 101 by Google : https://lnkd.in/d8UwPWeN
... 더 보기직장인으로서 10년 정도 일하게 되면 피할 수 없는 순간이 바로 조직에서 리더의 역할을 받게 되는 인사발령이다. 팀원이었을 때는 내게 주어진 업무를 내가 가진 능력과 주변 동료들의 도움으로 해결하고, 그에 합당한 평가와 보상을 기다리며, 나쁘지 않는 리워드와 내 위치에 안도하며 또 새해를 맞이하고 하루하루를 버텨나가는 과정에 큰 어려움이 없다.
... 더 보기누구나 특정 회사에 들어서는 순간 느끼는 회사마다의 분위기가 있다. 가정도 마찬가지이다. 분위기가 엄해보이는 집, 까불까불한 집, 대화는 없어도 화목해보이는 집.
... 더 보기어
... 더 보기