본문으로 건너뛰기

함수: queueStrategy()

function queueStrategy(options?): QueueStrategy;

정의 위치: packages/db/src/strategies/queueStrategy.ts:52

적절한 직렬화를 통해 모든 뮤테이션을 순서대로 처리하는 큐 전략을 생성합니다.

실행을 삭제할 수 있는 다른 전략과 달리 queue는 모든 뮤테이션을 순차적으로 시도합니다. 각 트랜잭션 커밋이 완료된 후 다음 트랜잭션이 시작됩니다. 데이터 일관성이 중요하고 모든 작업을 순서대로 시도해야 할 때 유용합니다.

오류 처리 동작:

  • 뮤테이션이 실패해도 자동으로 재시도되지 않습니다 - 트랜잭션이 "failed" 상태로 전환됩니다
  • 실패한 뮤테이션은 transaction.isPersisted.promise을 통해 오류를 표시합니다(거부됨)
  • 후속 뮤테이션은 계속 처리됩니다 - 한 번의 실패가 큐를 차단하지 않습니다
  • 각 뮤테이션은 독립적이며, 전부 성공하거나 전부 실패하는 트랜잭션 의미 체계는 없습니다

매개변수

options?

QueueStrategyOptions

큐 동작(FIFO/LIFO, 타이밍, 크기 제한)을 위한 구성입니다

반환값

QueueStrategy

큐 전략 인스턴스입니다

예제

// FIFO queue - process in order received
const mutate = usePacedMutations({
mutationFn: async ({ transaction }) => {
await api.save(transaction.mutations)
},
strategy: queueStrategy({
wait: 200,
addItemsTo: 'back',
getItemsFrom: 'front'
})
})
// LIFO queue - process most recent first
const mutate = usePacedMutations({
mutationFn: async ({ transaction }) => {
await api.save(transaction.mutations)
},
strategy: queueStrategy({
wait: 200,
addItemsTo: 'back',
getItemsFrom: 'back'
})
})