effect-io-ai

Package: effect
Module: PubSub

PubSub.takeAll

Takes all available messages from the subscription, suspending if no items are available.

Example (Taking all available messages)

import { Effect, PubSub } from "effect"

const program = Effect.gen(function*() {
  const pubsub = yield* PubSub.bounded<string>(10)

  yield* Effect.scoped(Effect.gen(function*() {
    const subscription = yield* PubSub.subscribe(pubsub)

    // Publish multiple messages
    yield* PubSub.publishAll(pubsub, ["msg1", "msg2", "msg3"])

    // Take all available messages at once
    const allMessages = yield* PubSub.takeAll(subscription)
    console.log("All messages:", allMessages) // ["msg1", "msg2", "msg3"]
  }))
})

Signature

declare const takeAll: <A>(self: Subscription<A>) => Effect.Effect<Arr.NonEmptyArray<A>>

Source

Since v4.0.0