effect-io-ai

Package: effect
Module: Queue

Queue.takeN

Takes up to n messages from the queue.

Details

The operation may wait until enough messages are available to satisfy the queue’s batching rules. If n is less than or equal to zero, it succeeds with an empty array. If the queue completes or fails before messages can be taken, the effect fails with the queue’s terminal error.

Example (Taking a fixed number of values)

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

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

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

  // Take exactly 3 messages
  const first3 = yield* Queue.takeN(queue, 3)
  console.log(first3) // [1, 2, 3]

  // Take exactly 2 more messages
  const next2 = yield* Queue.takeN(queue, 2)
  console.log(next2) // [4, 5]

  // Take remaining messages
  const remaining = yield* Queue.takeN(queue, 2)
  console.log(remaining) // [6, 7]
})

Signature

declare const takeN: <A, E>(self: Dequeue<A, E>, n: number) => Effect<Array<A>, E>

Source

Since v2.0.0