효뚜르팝의 Dev log
[React 까보기 시리즈] 리액트가 처리중인 WORK의 우선순위를 비교하는 방법(ensureRootIsScheduled) 본문
[React 까보기 시리즈] 리액트가 처리중인 WORK의 우선순위를 비교하는 방법(ensureRootIsScheduled)
hyodduru 2024. 9. 23. 20:59https://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 값