개발자
안녕하세요~ 프론트엔드 개발자로 취업을 준비하다가 어쩌다보니 최근에 node.js 개발자로 취업하게 됐습니다. JS 이벤트 룹은 (면접 때문에라도) 사실 많이 공부했다고 생각했는데, node.js와 브라우저의 event loop에 차이가 있다고 하더라고요. 저는 이 차이를 매크로 태스크 큐와 마이크로 태스크 큐의 우선순위 차이라고 알고 있는데 맞나요? 혹시 간략하게 설명을 해주시거나 참고하면 좋은 자료를 알려주세요. 감사합니다~
답변 1
인기 답변
Node.js 11 이전에선 질문자님이 말씀해주신것처럼 마이크로 태스크와 매크로 태스크의 우선순위에 조금 차이가 있습니다. Node.js 11 이상부터는 브라우저와 동일합니다. 브라우저 이벤트 루프에서 말하는 "이벤트"는 웹 페이지에서 일어나는 사용자의 상호작용(클릭, 스크롤..)을 얘기하는 반면 Node.js 에서 말하는 이벤트는 파일이나 네트워크를 읽고 쓰는 동작을 말합니다. 크롬은 libevent를, Node.js는 libuv를 각각 이벤트 루프 구현을 위해 사용합니다. 이벤트 루프는 '프로그래밍 패턴'이기 때문에, 실제 구현체는 구현 방식에 따라 차이가 있습니다. 브라우저에선 타이머가 중첩(nested)되는 경우, 5번째 타이머부터 최소 4밀리초 이후에 실행됩니다. (HTML5 스펙에 해당 규칙이 있음) 노드는 해당 규칙이 없습니다.
조영도
소프트웨어 엔지니어 • 2022년 11월 25일
좋은 내용 공유 감사합니다. 그런데 4초가 아니라 4밀리초인 것 같습니다. https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#reasons_for_delays_longer_than_specified
김하림
우아한형제들 프론트엔드 개발자 • 2022년 11월 25일
4밀리초가 맞습니다. 정정 감사합니다!
익명
작성자
2022년 11월 25일
깔끔한 정리 감사합니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!