Hyperlinkv0.8.0-beta.28

TxQueue

TxQueue.awaitCompletionconsteffect/TxQueue.ts:1478
(self: TxQueueState): Effect.Effect<void>

Waits for the queue to complete (either successfully or with failure).

Example (Awaiting queue completion)

import { Effect, TxQueue } from "effect"

const program = Effect.gen(function*() {
  const queue = yield* TxQueue.bounded<number, string>(10)

  // In another fiber, end the queue
  yield* Effect.forkChild(Effect.delay(TxQueue.interrupt(queue), "100 millis"))

  // Wait for completion - succeeds when queue ends
  yield* TxQueue.awaitCompletion(queue)
  console.log("Queue completed successfully")
})
combinators
Source effect/TxQueue.ts:147811 lines
export const awaitCompletion = (self: TxQueueState): Effect.Effect<void> =>
  Effect.gen(function*() {
    const state = yield* TxRef.get(self.stateRef)

    if (state._tag === "Done") {
      return void 0
    }

    // Not done yet, retry transaction
    return yield* Effect.txRetry
  }).pipe(Effect.tx)