본문으로 건너뛰기

어떤 Pacer 유틸리티를 선택해야 하나요?

TanStack Pacer는 작업 실행 시점을 제어하는 다섯 가지 전략을 제공합니다. 올바른 선택은 애플리케이션이 처리할 수 있는 속도보다 빠르게 들어오는 호출을 어떻게 다뤄야 하는지에 따라 달라집니다.

유틸리티 비교

유틸리티빈번한 호출은 어떻게 처리되나요?적합한 사용 사례
디바운서이전 호출은 버립니다. 활동이 멈춘 후 가장 최근 호출을 실행합니다.검색 입력, 검증, 자동 저장
스로틀러일정한 간격으로 호출을 제한합니다. 후행 호출은 가장 최근 인수를 유지할 수 있습니다.스크롤, 크기 조절, 진행률, 반복적인 UI 업데이트
요청률 제한기할당량에 도달할 때까지 호출을 실행합니다. 용량이 복구될 때까지 추가 호출을 거부합니다.클라이언트 측 할당량과 버스트 제한
큐 처리기호출이 순서 있는 버퍼에서 대기한 후 개별적으로 실행됩니다.반드시 손실 없이 처리해야 하는 작업
배처항목을 모아 하나의 배치로 함께 실행합니다.대량 요청, 쓰기, 분석 이벤트

필요한 동작에 따라 선택하기

최종 값만 중요한 경우

디바운서를 사용합니다. 호출할 때마다 타이머가 다시 시작되며 호출이 잠잠해지면 가장 최근 호출이 실행됩니다.

작업이 일정한 속도로 계속되어야 하는 경우

스로틀러를 사용합니다. 활동이 완전히 멈출 때까지 기다리지 않고 실행 빈도를 제한합니다.

고정 할당량을 반드시 적용해야 하는 경우

요청률 제한기를 사용합니다. 설정한 제한에 도달할 때까지 호출을 수락한 다음 해당 시간 창 안의 추가 호출을 거부합니다.

모든 작업을 반드시 실행해야 하는 경우

큐 처리기를 사용합니다. 대기 중인 작업을 보존하고 FIFO, LIFO 또는 우선순위에 따라 처리합니다. maxSize가 유한하면 새 항목이 여전히 거부될 수 있습니다.

여러 항목을 함께 실행해야 하는 경우

배처를 사용합니다. 크기, 시간 또는 사용자 지정 조건이 하나의 배치 실행을 트리거할 때까지 항목을 수집합니다.

동기 또는 비동기

각 유틸리티에는 동기 버전과 비동기 버전이 있습니다. 유틸리티가 Promise 관련 동작을 관리해야 하는 경우가 아니라면 동기 버전부터 사용합니다.

다음이 필요할 때 비동기 버전을 사용합니다.

  • 래핑된 함수의 결과를 기다립니다.
  • 성공, 오류, 완료 상태를 추적합니다.
  • 오류 전파를 설정합니다.
  • 실패한 실행을 재시도합니다.
  • 진행 중인 작업을 중단합니다.
  • AsyncQueuer로 큐에 있는 작업을 동시에 실행합니다.

동기 유틸리티에 비동기 함수를 전달해도 이러한 기능은 제공되지 않습니다. 동기 유틸리티는 함수를 호출하지만 그 Promise를 기다리거나 관리하지 않습니다.

동기비동기
디바운스비동기 디바운스
스로틀비동기 스로틀
요청률 제한비동기 요청률 제한
비동기 큐
배칭비동기 배칭

비동기 유틸리티는 재시도와 중단을 지원하기 위해 내부적으로 AsyncRetryer를 사용합니다.

코어 패키지 또는 프레임워크 어댑터

컴포넌트 생명주기 통합 없이 코어 클래스와 함수가 필요하다면 @tanstack/pacer를 사용합니다.

자동 정리와 반응형 상태가 필요한 애플리케이션에서는 프레임워크 어댑터를 사용합니다.

프레임워크 어댑터는 동일한 기반 유틸리티를 여러 형태의 API로 제공합니다.

  • useDebouncer 같은 인스턴스 API는 생명주기 메서드와 선택한 상태를 노출합니다.
  • useDebouncedCallback 같은 콜백 API는 호출할 함수를 반환합니다.
  • 상태 및 값 API는 유틸리티를 프레임워크 상태와 연결합니다.

필요한 제어 기능을 제공하는 가장 제한적인 API를 선택합니다. cancel()이나 flush() 같은 메서드가 필요하면 인스턴스 API를 사용합니다.

Pacer Lite 또는 Pacer

@tanstack/pacer-lite는 더 작고 비반응형인 유틸리티가 필요한 라이브러리를 위한 패키지입니다. TanStack Store 통합, 프레임워크 어댑터, Devtools 지원과 일부 고급 옵션을 제외합니다.

애플리케이션 코드에는 일반 코어 패키지나 프레임워크 어댑터를 사용합니다. 번들 크기가 가장 중요한 제약이고 반응형 상태가 필요하지 않다면 Pacer Lite를 고려합니다.