Hyperlinkv0.8.0-beta.28

Channel

Channel.runForEachconsteffect/Channel.ts:7755
<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>

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"
execution
Source effect/Channel.ts:775518 lines
export 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>
} = dual(
  2,
  <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> =>
    runWith(self, (pull) => Effect.forever(Effect.flatMap(pull, f), { disableYield: true }))
)
Referenced by 8 symbols