Package: effect
Module: Queue
Runs an Effect into a Queue, where success ends the queue and failure
fails the queue.
Example (Running effects into queues)
import { Cause, Effect, Queue } from "effect"
const program = Effect.gen(function*() {
const queue = yield* Queue.bounded<number, Cause.Done>(10)
// Create an effect that succeeds
const dataProcessing = Effect.gen(function*() {
yield* Effect.sleep("100 millis")
return "Processing completed successfully"
})
// Pipe the effect into the queue
// If dataProcessing succeeds, queue ends successfully
// If dataProcessing fails, queue fails with the error
const effectIntoQueue = Queue.into(queue)(dataProcessing)
const wasCompleted = yield* effectIntoQueue
console.log("Queue operation completed:", wasCompleted) // true
// Queue state now reflects the effect's outcome
console.log("Queue state:", queue.state._tag) // "Done"
})
Signature
declare const into: { <A, E>(self: Enqueue<A, E | Done>): <AX, EX extends E, RX>(effect: Effect<AX, EX, RX>) => Effect<boolean, never, RX>; <AX, E, EX extends E, RX, A>(effect: Effect<AX, EX, RX>, self: Enqueue<A, E | Done>): Effect<boolean, never, RX>; }
Since v4.0.0