클래스: Throttler<TFn>
정의 위치: throttler.ts:150
스로틀된 함수를 생성하는 클래스입니다.
스로틀은 지정된 시간 범위 내에 함수를 최대 한 번만 호출하도록 보장합니다. 호출이 잠시 멈출 때까지 기다리는 디바운스와 달리, 스로틀은 호출 빈도와 관계없이 일관된 실행 시점을 보장합니다. 이 동기 버전은 더 가벼우며 대개 필요한 기능을 모두 제공합니다. Promise, 재시도 지원, 중단/취소 기능 또는 고급 오류 처리가 필요하면 AsyncThrottler로 전환하십시오.
선행 에지 실행과 후행 에지 실행을 모두 지원합니다:
- 선행: 첫 번째 호출 시 즉시 실행합니다(기본값: true)
- 후행: 스로틀 적용 중에 호출되면 대기 기간이 지난 후 실행합니다(기본값: true)
빠르게 연속으로 발생하는 이벤트를 하나로 통합하여 마지막 호출만 처리하려면 Debouncer 사용을 고려하십시오.
상태 관리:
- 반응형 상태 관리에 TanStack Store를 사용합니다
- 스로틀러를 생성할 때 초기 상태 값을 제공하려면
initialState를 사용합니다 - 함수 실행에 반응하고 사용자 지정 로직을 구현하려면
onExecute콜백을 사용합니다 - 상태에는 실행 횟수, 마지막 실행 시각, 대기 중 상태 등이 포함됩니다
- 클래스를 직접 사용할 때는
throttler.store.state를 통해 상태에 액세스할 수 있습니다 - 프레임워크 어댑터(React/Solid)를 사용할 때는
throttler.state에서 상태에 액세스합니다
예시
const throttler = new Throttler(
(id: string) => api.getData(id),
{ wait: 1000 } // Execute at most once per second
);
// First call executes immediately
throttler.maybeExecute('123');
// Subsequent calls within 1000ms are throttled
throttler.maybeExecute('123'); // Throttled
타입 매개변수
TFn
TFn extends AnyFunction
생성자
생성자
new Throttler<TFn>(fn, initialOptions): Throttler<TFn>;
정의 위치: throttler.ts:158
매개변수
fn
TFn
initialOptions
ThrottlerOptions<TFn>
반환값
Throttler<TFn>
속성
fn
fn: TFn;
정의 위치: throttler.ts:159
key
key: string | undefined;
정의 위치: throttler.ts:154
options
options: ThrottlerOptions<TFn>;
정의 위치: throttler.ts:155
store
readonly store: Store<Readonly<ThrottlerState<TFn>>>;
정의 위치: throttler.ts:151
메서드
cancel()
cancel(): void;
정의 위치: throttler.ts:322
대기 중인 후행 실행을 모두 취소하고 내부 상태를 지웁니다.
후행 실행이 예약되어 있다면(trailing=true로 스로틀하여 발생한 경우), 이 메서드는 해당 실행이 발생하지 않게 합니다. 내부 타임아웃과 저장된 인수가 지워집니다.
대기 중인 실행이 없으면 아무 효과가 없습니다.
반환값
void
flush()
flush(): void;
정의 위치: throttler.ts:300
현재 대기 중인 실행을 즉시 처리합니다
반환값
void
maybeExecute()
maybeExecute(...args): void;
정의 위치: throttler.ts:241
스로틀된 함수를 실행하려고 시도합니다. 실행 동작은 스로틀러 옵션에 따라 달라집니다:
-
마지막 실행 이후 충분한 시간이 지났다면(>= 대기 기간):
- leading=true이면: 즉시 실행합니다
- leading=false이면: 다음 후행 실행을 기다립니다
-
아직 대기 기간 내라면:
- trailing=true이면: 대기 기간 종료 시점에 실행되도록 예약합니다
- trailing=false이면: 실행 요청을 버립니다
매개변수
args
...Parameters<TFn>
반환값
void
예시
const throttled = new Throttler(fn, { wait: 1000 });
// First call executes immediately
throttled.maybeExecute('a', 'b');
// Call during wait period - gets throttled
throttled.maybeExecute('c', 'd');
reset()
reset(): void;
정의 위치: throttler.ts:333
스로틀러 상태를 기본값으로 재설정합니다
반환값
void
setOptions()
setOptions(newOptions): void;
정의 위치: throttler.ts:183
스로틀러 옵션을 업데이트합니다
매개변수
newOptions
Partial<ThrottlerOptions<TFn>>
반환값
void