클래스: Queuer<TValue>
정의 위치: queuer.ts:269
구성 가능한 대기 시간, 만료 및 우선순위에 따라 항목을 처리하는 유연한 큐입니다.
이 동기 버전은 더 가벼우며 대부분의 경우 필요한 기능을 모두 제공합니다. 프로미스, 재시도 지원, 중단 기능, 동시 실행 또는 고급 오류 처리가 필요하다면 AsyncQueuer로 전환합니다.
기능:
- 항목 자동 또는 수동 처리
- FIFO(선입선출), LIFO(후입선출) 또는 양방향 큐 동작
- getPriority가 제공되었을 때 우선순위 기반 정렬
- 항목 만료 및 오래된 항목 제거
- 큐 상태 변경, 실행, 거부 및 만료를 위한 콜백
실행 동작:
start(): 큐에 있는 항목의 자동 처리를 시작합니다(기본값은 isRunning입니다).stop(): 처리를 일시 중지하지만 큐 상태는 유지합니다.wait: 항목 처리 사이의 구성 가능한 지연 시간입니다.onItemsChange/onExecute: 큐 상태를 모니터링하는 콜백입니다.
자동 처리가 비활성화된 경우 수동 처리도 지원합니다.
execute(): 제공된 함수를 사용하여 다음 항목을 처리합니다.getNextItem(): 다음 항목을 처리하지 않고 제거하여 반환합니다.
큐 동작의 기본값은 FIFO입니다.
addItem(item): 큐의 뒤쪽에 항목을 추가합니다.- 큐의 앞쪽부터 항목을 처리합니다.
우선순위 큐:
getPriority함수를 제공하면 값이 높은 항목을 먼저 처리합니다.
스택(LIFO):
addItem(item, 'back'): 뒤쪽에 항목을 추가합니다.getNextItem('back'): 뒤쪽에서 항목을 제거합니다.
양방향 큐:
addItem(item, position): 지정한 위치('front'/'back')에 항목을 추가합니다.getNextItem(position): 지정한 위치에서 항목을 제거합니다.
항목 만료:
expirationDuration: 항목이 큐에 머무를 수 있는 최대 시간입니다.getIsExpired: 기본 만료 동작을 재정의하는 함수입니다.onExpire: 만료된 항목을 위한 콜백입니다.
상태 관리:
- 반응형 상태 관리에 TanStack Store를 사용합니다.
- 큐 처리기를 생성할 때
initialState로 초기 상태 값을 제공합니다. onExecute콜백으로 항목 실행에 반응하고 사용자 정의 로직을 구현합니다.onItemsChange콜백으로 큐에 항목이 추가되거나 큐에서 제거되는 것에 반응합니다.onExpire콜백으로 항목 만료에 반응하고 사용자 정의 로직을 구현합니다.onReject콜백으로 큐가 가득 찼을 때 항목이 거부되는 것에 반응합니다.- 상태에는 실행 횟수, 만료 횟수, 거부 횟수 및 isRunning 상태가 포함됩니다.
- 클래스를 직접 사용할 때는
queuer.store.state를 통해 상태에 접근할 수 있습니다. - 프레임워크 어댑터(React/Solid)를 사용할 때는
queuer.state에서 상태에 접근합니다.
사용 예시:
// Auto-processing queue with wait time
const autoQueue = new Queuer<number>((n) => console.log(n), {
started: true, // Begin processing immediately
wait: 1000, // Wait 1s between items
onExecute: (item, queuer) => console.log(`Processed ${item}`)
});
autoQueue.addItem(1); // Will process after 1s
autoQueue.addItem(2); // Will process 1s after first item
// Manual processing queue
const manualQueue = new Queuer<number>((n) => console.log(n), {
started: false
});
manualQueue.addItem(1); // [1]
manualQueue.addItem(2); // [1, 2]
manualQueue.execute(); // logs 1, queue is [2]
manualQueue.getNextItem(); // returns 2, queue is empty
타입 매개변수
TValue
TValue
생성자
생성자
new Queuer<TValue>(fn, initialOptions): Queuer<TValue>;
정의 위치: queuer.ts:277
매개변수
fn
(item) => void
initialOptions
QueuerOptions<TValue> = {}
반환값
Queuer<TValue>
속성
fn()
fn: (item) => void;
정의 위치: queuer.ts:278
매개변수
item
TValue
반환값
void
key
key: string | undefined;
정의 위치: queuer.ts:273
options
options: QueuerOptions<TValue>;
정의 위치: queuer.ts:274
store
readonly store: Store<Readonly<QueuerState<TValue>>>;
정의 위치: queuer.ts:270
메서드
addItem()
addItem(
item,
position,
runOnItemsChange): boolean;
정의 위치: queuer.ts:404
큐에 항목을 추가합니다. 큐가 가득 차면 항목을 거부하고 onReject를 호출합니다.
undefined는 내부적으로 "항목 없음"을 나타내는 센티널이므로 큐에 추가할 수 없으며 항상 거부됩니다.
구성에 따라 우선순위를 기준으로 또는 앞/뒤 위치에 항목을 삽입할 수 있습니다.
항목이 추가되었으면 true를 반환하고, 큐가 가득 찼으면 false를 반환합니다.
사용 예시:
queuer.addItem('task');
queuer.addItem('task2', 'front');
매개변수
item
TValue
position
QueuePosition = ...
runOnItemsChange
boolean = true
반환값
boolean
clear()
clear(): void;
정의 위치: queuer.ts:696
큐에서 대기 중인 모든 항목을 제거합니다. 처리 중인 항목에는 영향을 주지 않습니다.
반환값
void
execute()
execute(position?): TValue | undefined;
정의 위치: queuer.ts:550
큐에서 다음 항목을 제거하여 반환하고, 제공된 함수를 사용해 처리합니다.
사용 예시:
queuer.execute();
// LIFO
queuer.execute('back');
매개변수
position?
반환값
TValue | undefined
flush()
flush(numberOfItems, position?): void;
정의 위치: queuer.ts:566
지정된 수의 항목을 대기 시간 없이 즉시 실행하도록 처리합니다. numberOfItems를 제공하지 않으면 모든 항목을 처리합니다.
매개변수
numberOfItems
number = ...
position?
반환값
void
flushAsBatch()
flushAsBatch(batchFunction): void;
정의 위치: queuer.ts:581
제공된 함수를 인수로 사용하여 큐의 모든 항목을 배칭 방식으로 처리합니다. 처리 후 큐를 비웁니다.
매개변수
batchFunction
(items) => void
반환값
void
getNextItem()
getNextItem(position): TValue | undefined;
정의 위치: queuer.ts:498
함수를 실행하지 않고 큐에서 다음 항목을 제거하여 반환합니다. 큐를 수동으로 관리할 때 사용합니다. 일반적으로 항목을 처리하려면 execute()를 사용합니다.
사용 예시:
// FIFO
queuer.getNextItem();
// LIFO
queuer.getNextItem('back');
매개변수
position
QueuePosition = ...
반환값
TValue | undefined
peekAllItems()
peekAllItems(): TValue[];
정의 위치: queuer.ts:664
큐에 있는 모든 항목의 복사본을 반환합니다.
반환값
TValue[]
peekNextItem()
peekNextItem(position): TValue | undefined;
정의 위치: queuer.ts:654
큐에서 다음 항목을 제거하지 않고 반환합니다.
사용 예시:
queuer.peekNextItem(); // front
queuer.peekNextItem('back'); // back
매개변수
position
QueuePosition = 'front'
반환값
TValue | undefined
reset()
reset(): void;
정의 위치: queuer.ts:704
큐 처리기 상태를 기본값으로 재설정합니다.
반환값
void
setOptions()
setOptions(newOptions): void;
정의 위치: queuer.ts:319
큐 처리기 옵션을 업데이트합니다. 새 옵션은 기존 옵션과 병합됩니다.
매개변수
newOptions
Partial<QueuerOptions<TValue>>
반환값
void
start()
start(): void;
정의 위치: queuer.ts:671
큐에 있는 항목의 처리를 시작합니다. 이미 isRunning 상태이면 아무 작업도 하지 않습니다.
반환값
void
stop()
stop(): void;
정의 위치: queuer.ts:681
큐에 있는 항목의 처리를 중지합니다. 큐는 비우지 않습니다.
반환값
void