effect-io-ai

Package: effect
Module: Queue

Queue.takeAll

Takes all currently available messages, waiting until at least one message is available when the queue is empty.

When to use

Use when consumers should process the next non-empty batch of buffered messages instead of repeatedly taking one message at a time.

Details

Returns a non-empty array. If the queue completes or fails before a message can be taken, the effect fails with the queue’s terminal error.

Example (Taking all available values)

import { Cause, Effect, Queue } from "effect"

const program = Effect.gen(function*() {
  const queue = yield* Queue.bounded<number, Cause.Done>(5)

  // Add several messages
  yield* Queue.offerAll(queue, [1, 2, 3, 4, 5])

  // Take all available messages
  const messages1 = yield* Queue.takeAll(queue)
  console.log(messages1) // [1, 2, 3, 4, 5]
})

Signature

declare const takeAll: <A, E>(self: Dequeue<A, E>) => Effect<Arr.NonEmptyArray<A>, E>

Source

Since v2.0.0