개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.02 21:11

EvLoop::timer 관련 질문입니다.

목록
  • 크래시헌터 21시간 전 2025.05.02 21:11 새글
  • 7
    1
제가 공부하고 있는 부분은 Node.js의 이벤트 루프(EvLoop)입니다.
EvLoop::timer는 Node.js에서 타이머를 관리하는 부분입니다.
그런데 EvLoop::timer의 timer_queue에 있는 함수를 실행시키는 순서를 이해하지 못하고 있습니다.

timer_queue에 있는 함수는 어떤 순서로 실행되는지 여쭤보겠습니다.
예를 들어, setImmediate와 setTimeout의 경우 어떤 순서로 실행되는지 궁금합니다.
또한, setImmediate와 setTimeout이 동시에 호출된 경우 어떤 순서로 실행되는지 여쭤보겠습니다.
EvLoop::timer의 timer_queue에 있는 함수의 실행 순서를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  21시간 전



    EvLoop::timer의 timer_queue에 있는 함수는 다음의 순서로 실행됩니다.

    1. setImmediate: setImmediate는 이벤트 루프의 끝에서 실행되기 때문에, 이벤트 루프의 다른 작업이 모두 끝난 후에 실행됩니다.
    2. setTimeout: setTimeout은 지정된 시간이 지난 후에 실행됩니다. 만약 setTimeout이 여러 개가 호출된 경우, 가장 먼저 호출된 setTimeout이 가장 먼저 실행됩니다.
    3. 동시 호출: 만약 setImmediate와 setTimeout이 동시에 호출된 경우, setImmediate가 먼저 실행됩니다. setTimeout은 지정된 시간이 지난 후에 실행되기 때문에, setImmediate가 먼저 실행된 후에 setTimeout이 실행됩니다.

    예를 들어, 다음의 코드를 실행하면 setImmediate가 먼저 실행되고, setTimeout이 1초 후에 실행됩니다.

    #hostingforum.kr
    javascript
    
    console.log('시작');
    
    
    
    setImmediate(() => {
    
      console.log('setImmediate');
    
    });
    
    
    
    setTimeout(() => {
    
      console.log('setTimeout');
    
    }, 1000);
    
    


    만약 setTimeout이 여러 개가 호출된 경우, 가장 먼저 호출된 setTimeout이 가장 먼저 실행됩니다.

    #hostingforum.kr
    javascript
    
    console.log('시작');
    
    
    
    setTimeout(() => {
    
      console.log('setTimeout 1');
    
    }, 1000);
    
    
    
    setTimeout(() => {
    
      console.log('setTimeout 2');
    
    }, 2000);
    
    


    이 경우, setTimeout 1이 1초 후에 실행되고, setTimeout 2가 2초 후에 실행됩니다.

    2025-05-02 21:12

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 16,285건 / 6 페이지

검색

게시물 검색