문제를 풀면서 문제의 의도와 연관된 개념에 대해 정리합니다.
여러 Promise를 동시에 처리하고, 그 결과를 합산하여 새로운 Promise를 반환하기
Promise 병행 처리 이해Promise의 동작 원이를 이해하고, 여러 Promise를 동시에 처리하는 방법 학습Promise.all과 같은 패턴을 활용하여 여러 비동기 작업을 한 번에 처리async/await 활용async/await을 활용하여 비동기 함수의 결과 처리일시적으로 지연 후 완료되는 비동기 함수 작성하기
Promise 활용 이해setTimeout과 Promise를 결합하여 비동기 처리 패턴 학습setTimeout을 자주 사용함지연 실행되는 함수를 동적으로 취소하는 메커니즘 구현하기
setTimeout을 이용한 지연 실행의 이해t 밀리초 이후 실행하도록 구현clearTimeout을 이용한 setTimeout 취소clearTimeout 사용cancelFn이 호출되면 clearTimeout이 수행되어야 함cancelFn이 나중에 호출되더라도 타이머 id에 접근할 수 있어야 하므로 클로저를 이용한 id 저장fn가 실행되는 경우(cancelTimeMs > t)fn이 실행된 후 cancelFn이 실행됨cancelFn은 아무것도 취소하지 못함fn이 취소되는 경우(cancelTimeMs < t)cancelFn이 타이머를 먼저 제거fn이 실행되지 않음주기적으로 반복 실행되는 함수를 동적으로 취소하는 메커니즘 구현하기
setInterval을 이용한 함수 반복 호출setInterval의 첫 번째 실행은 delay 후에 발생clearInterval을 이용한 setInterval 취소 이해clearInterval 사용cancelFn이 호출되면 clearInterval이 수행되어야 함Promise 기반 비동기 함수에 시간 제한을 걸어 동작 제어하기
⇒ 타임아웃 제어가 가능한 Promise 패턴 구현
Promise 동작 원리 및 Promise.race 패턴 이해fn이 언제 resolve/reject 되는지setTimeout의 타임아웃이 언제 reject 되는지Promise.race를 사용하는 경우 두 가지가 경쟁하는 개념fn에서 에러가 발생하는 경우, 타임아웃과 별개로 즉시 reject시간 기반 캐싱 구현하기
⇒ 일정 시간이 지나면 자동으로 무효화 되는 key-value 캐시 만들되, 만료/덮어쓰기/정확한 count 값 올바르게 처리
Map 을 이용한 key-value 저장setTimeout으로 일정 시간이 지난 후 key 제거clearTimeout 으로 만료된 타이머 정리Date.now를 이용하여 만료 시점 계산set 호출 시 다음 조건 확인key의 만료 여부value, duration 덮어쓰기clearTimeout)setTimeout)setTimeout은 정확한 시간을 보장하지 않으므로 이를 방지하기 위해 get, count에서 만료 검증Date.now로 만료 여부 확인key 제거count의 데이터 정합성Map을 순회하며 만료 검증 후 만료된 key 제거key 제거비동기 타이머의 예약/취소 흐름 이해하며 debounce 직접 구현하기
clearTimeout으로 취소setTimeout으로 호출 예약clearTimeout으로 취소t)과 실행 시점(t + debounce 시간)을 명확히 비교하기Promise.all 직접 구현하기
Promise 상태 관리Promise를 동시에 실행 후 성공과 실패를 추적Promise가 성공할 경우, 모든 결과를 배열로 모아 반환reject 처리