Package: effect
Module: Channel
Runs a channel and applies an effect to each output element.
Example (Running effects for each output)
import { Channel, Console, Data } from "effect"
class ForEachError extends Data.TaggedError("ForEachError")<{
readonly element: unknown
}> {}
// Create a channel with numbers
const numbersChannel = Channel.fromIterable([1, 2, 3])
// Run forEach to log each element
const forEachEffect = Channel.runForEach(
numbersChannel,
(n) => Console.log(`Processing: ${n}`)
)
// Logs: "Processing: 1", "Processing: 2", "Processing: 3"
Signature
declare const runForEach: { <OutElem, EX, RX>(f: (o: OutElem) => Effect.Effect<void, EX, RX>): <OutErr, OutDone, Env>(self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>) => Effect.Effect<OutDone, OutErr | EX, Env | RX>; <OutElem, OutErr, OutDone, Env, EX, RX>(self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>, f: (o: OutElem) => Effect.Effect<void, EX, RX>): Effect.Effect<OutDone, OutErr | EX, Env | RX>; }
Since v4.0.0