본문 바로가기
✘✘✘ Javascript

[Basic] Javascript sync/async, blocking/non-blocking

by PrettyLog 2023. 5. 17.

자바스크립트: 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을 할까?

한다

댓글