Hyperlinkv0.8.0-beta.28

Stream

Stream.onStartconsteffect/Stream.ts:9879
<X, EX, RX>(onStart: Effect.Effect<X, EX, RX>): <A, E, R>(
  self: Stream<A, E, R>
) => Stream<A, E | EX, R | RX>
<A, E, R, X, EX, RX>(
  self: Stream<A, E, R>,
  onStart: Effect.Effect<X, EX, RX>
): Stream<A, E | EX, R | RX>

Runs the provided effect before this stream starts.

Example (Running an effect on start)

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

const program = Effect.gen(function*() {
  const stream = Stream.fromArray([1, 2, 3]).pipe(
    Stream.onStart(Console.log("Stream started"))
  )

  const values = yield* Stream.runCollect(stream)
  yield* Console.log(values)
})

Effect.runPromise(program)
// Output:
// Stream started
// [1, 2, 3]
sequencing
Source effect/Stream.ts:987912 lines
export const onStart: {
  <X, EX, RX>(
    onStart: Effect.Effect<X, EX, RX>
  ): <A, E, R>(self: Stream<A, E, R>) => Stream<A, E | EX, R | RX>
  <A, E, R, X, EX, RX>(
    self: Stream<A, E, R>,
    onStart: Effect.Effect<X, EX, RX>
  ): Stream<A, E | EX, R | RX>
} = dual(2, <A, E, R, X, EX, RX>(
  self: Stream<A, E, R>,
  onStart: Effect.Effect<X, EX, RX>
): Stream<A, E | EX, R | RX> => fromChannel(Channel.onStart(self.channel, onStart)))