Hyperlinkv0.8.0-beta.28

Queue

Queue.takeAllconsteffect/Queue.ts:1218
<A, E>(self: Dequeue<A, E>): Effect<Arr.NonEmptyArray<A>, E>

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]
})
taking
Source effect/Queue.ts:12182 lines
export const takeAll = <A, E>(self: Dequeue<A, E>): Effect<Arr.NonEmptyArray<A>, E> =>
  takeBetween(self, 1, Number.POSITIVE_INFINITY) as any
Referenced by 4 symbols