Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

효뚜르팝의 Dev log

[React 까보기 시리즈] 리액트가 처리중인 WORK의 우선순위를 비교하는 방법(ensureRootIsScheduled) 본문

TIL

[React 까보기 시리즈] 리액트가 처리중인 WORK의 우선순위를 비교하는 방법(ensureRootIsScheduled)

hyodduru 2024. 9. 23. 20:59
https://www.youtube.com/watch?v=OOMczDLPrBQ&t=9s

리액트가 처리중인 WORK의 우선순위를 비교하는 방법

 

ensureRootIsScheduled가 하는 일

1. root에서 필요한 정보들 가져와서 새로운 WORK의 우선순위 얻기

2. 기존 WORK와 비교 

    a. 기존 > 새로운 -> 함수 종료 

    b. 기존 < 새로운 -> 새로운 WORK의 스케줄 정보 새기기 

          scheduleCallback을 호출함(schedule과 관련된 코드)

 

재조정 작업(WORK)이 필요한 root에 정보들을 마크한다 를 스케줄링 하기 전에 필요한 정보들 가져오기 

 

하는 일 

- expirationTime nextRoot(root)에서 가져옴 

- currentTime 

    - 위 2개를 활용 -> WORK 우선순위 (inferPriorityExpirationTime 실행) 

- 우선순위대로 기존 WORK를 취소 or 처리 

- root에 WORK 스케줄링을 요청하고 스케줄링 정보를 할당 

 

위 2개를 활용 -> WORK 우선순위(priorityLevel) 얻기 

inferPriorityExpirationTime 실행 -> priorityLevel 얻기 

ms는 시점이므로 큰 수 일수록 나중 시점 

    - expirationTimeMs < currentTimeMs -> 당장 실행해야 함! 

 

기존 WORK와 새로운 WORK의 우선순위 비교하여 진행 

callbackNode(WORK) 있으면 우선순위 비교 

- 우선순위 높은 것이 

    - 기존 것이면 -> 함수 종료 

    - 새로운 것이면 -> 기존 것 cancelCallback 

          - root.callbackExpirationTime에 새로운 것 정보 새김 

          - root.callbackPriority 

          - callbackNode가 뭔지 알게 됨 

               - scheduleCallback의 return 값