자바스크립트: sync 언어, blocking, single- threaded 이다
- 코드가 순차적으로 실행된다 - 동기
- 코드가 실행이 끝나야 다음 코드 실행이 가능하다 - 블로킹
?? 그럼 어떻게 우리는 javascript에서 코드를 비동기, non-blocking하게 실행시킬 수 있을까?
정답은 브라우저 및 node
브라우저(node.js runtime)에서 javascript: async/non-blocking 이다
- event loop
- call stack
- (macro) task queue ()
- micro task queue (promise queue)
- request animation queue
- web API
- v8
우리는 브라우저에서 자바스크립트를 비동기적 실행 가능 (with Web API),
Web API does not block code executtion(제어권을 넘기지 않는다)
제어권을 넘기지 않지만 Event Loop + task queue, micro task queue, animation queue + callback을 사용해 비동기 적으로 코드 실행이 가능하고 Web API가 실행하는 과정에서 Javascript 코드가 실행되는 걸 blocking 하지 않는다.(non - blocking)
자바스크립트를 비동기적으로 실행할 수 있도록 브라우저가 만들어져 있는 거다
?? Javascript는 interpret 언어? 브라우저에선? compile을 할까?
한다
'✘✘✘ Javascript' 카테고리의 다른 글
[javascript] replace with Regex, $n vs $& (0) | 2023.05.09 |
---|---|
[web API] ResizeObserver: 크기변화 감지 (0) | 2023.04.14 |
[axios] Query params 자동 인코딩 Query string > params are encoded automatically (0) | 2023.04.10 |
Javascript Falsy values 값들 (0) | 2023.04.09 |
[event] window.matchMedia - mobile detecting: 모바일 확인 하기 + React Hook (0) | 2023.04.06 |
댓글