Hyperlinkv0.8.0-beta.28

Stream

Stream.onFirstconsteffect/Stream.ts:9912
<A, X, EX, RX>(
  onFirst: (element: NoInfer<A>) => Effect.Effect<X, EX, RX>
): <E, R>(self: Stream<A, E, R>) => Stream<A, E | EX, R | RX>
<A, E, R, X, EX, RX>(
  self: Stream<A, E, R>,
  onFirst: (element: NoInfer<A>) => Effect.Effect<X, EX, RX>
): Stream<A, E | EX, R | RX>

Runs the provided effect with the first element emitted by the stream.

Example (Running an effect on the first value)

import { Console, Effect, Stream } from "effect"

Effect.runPromise(Effect.gen(function* () {
  yield* Stream.fromArray([1, 2, 3]).pipe(
    Stream.onFirst((value) => Console.log(`first=${value}`)),
    Stream.runDrain
  )
}))
// Output: first=1
sequencing
Source effect/Stream.ts:991212 lines
export const onFirst: {
  <A, X, EX, RX>(
    onFirst: (element: NoInfer<A>) => Effect.Effect<X, EX, RX>
  ): <E, R>(self: Stream<A, E, R>) => Stream<A, E | EX, R | RX>
  <A, E, R, X, EX, RX>(
    self: Stream<A, E, R>,
    onFirst: (element: NoInfer<A>) => Effect.Effect<X, EX, RX>
  ): Stream<A, E | EX, R | RX>
} = dual(2, <A, E, R, X, EX, RX>(
  self: Stream<A, E, R>,
  onFirst: (element: NoInfer<A>) => Effect.Effect<X, EX, RX>
): Stream<A, E | EX, R | RX> => fromChannel(Channel.onFirst(self.channel, (arr) => onFirst(arr[0]))))
Referenced by 1 symbols