자바스크립트 이벤트 루프에 대해

    • JS = 싱글스레드프로그래밍언어 , 런타임
      • 런타임시 한번에 하나의 코드 실행가능
      • webAPI들이 여러 스레드처리를 해준다(setTimeout, AJAX…)
    • 콜스택 =  js 영역, 호출되는 메소드들은 스택에 저장되게 되고 팝하면서 실행
    • 블로킹
      • 자바스크립트는 싱글 스레드로 동작. 네트워크 요청과 같은 느린 작업시 작업동안 스택은 블로킹됨 다른 브라우저 작업 수없다.
        • 유동적인 ui 웹을 구현하는데 제약.
    • 비동기 콜백
      • timeout이나 AJAX 같은 webAPI종류들은 같은 방식으로 동작하게 된다. JS런타인에서 실행되는게 아닌 브라우저에의해 실행되며 그동안 JS에서는 다른 코드가 실행 가능하다.
      • code -> stack(비동기 호출) -> webAPI(browser) -> task queue -> event loop 의해 -> stack(콜백 호출)
      • SetTimeout
        • js코드에서 setTimeout 3 hello() 함수를 호출하라는 명령.
        • 스택에서는 setTimeout 실행
        • webAPI영역의 브라우저에서 setTimeout 기능을 수행.(3초를 센다.)
        • setTimeout 함수에서 명시한 hello()함수는 task큐로 이동되고
        • 이벤트 루프는 task큐에 작업이 들어온것을 인식, 스택으로 보내어지며, hello() 콜백함수는 실행되어 진다.
        • 태스크큐에서 스택으로 전달될 때는 스택이 완전히 비워지고 후이다.
        • 스택을 비우기 위해 setTimeout(0)가 사용됨

     

    • 이벤트 루프 - 스택과 테스크 큐를 주시, 이벤트 루프는 태스크 큐에 존재하는 작업을  스택에 전달함.

     


댓글

가장 많이 본 글