본문으로 건너뛰기

클래스: 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&lt;TValue> = {}

반환값

Queuer&lt;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?

QueuePosition

반환값

TValue | undefined


flush()

flush(numberOfItems, position?): void;

정의 위치: queuer.ts:566

지정된 수의 항목을 대기 시간 없이 즉시 실행하도록 처리합니다. numberOfItems를 제공하지 않으면 모든 항목을 처리합니다.

매개변수

numberOfItems

number = ...

position?

QueuePosition

반환값

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&lt;QueuerOptions&lt;TValue>>

반환값

void


start()

start(): void;

정의 위치: queuer.ts:671

큐에 있는 항목의 처리를 시작합니다. 이미 isRunning 상태이면 아무 작업도 하지 않습니다.

반환값

void


stop()

stop(): void;

정의 위치: queuer.ts:681

큐에 있는 항목의 처리를 중지합니다. 큐는 비우지 않습니다.

반환값

void