Hyperlinkv0.8.0-beta.28

Effect

Effect.foreverconsteffect/Effect.ts:7515
<
  Arg extends
    | Effect<any, any, any>
    | { readonly disableYield?: boolean | undefined }
    | undefined = { readonly disableYield?: boolean | undefined }
>(
  effectOrOptions?: Arg,
  options?: { readonly disableYield?: boolean | undefined } | undefined
): [Arg] extends [Effect<infer _A, infer _E, infer _R>]
  ? Effect<never, _E, _R>
  : <A, E, R>(self: Effect<A, E, R>) => Effect<never, E, R>

Repeats this effect forever (until the first error).

Example (Repeating forever)

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

const task = Effect.gen(function*() {
  yield* Console.log("Task running...")
  yield* Effect.sleep("1 second")
})

// This will run forever, printing every second
const program = task.pipe(Effect.forever)

// This will run forever, without yielding every iteration
const programNoYield = task.pipe(Effect.forever({ disableYield: true }))

// Run for 5 seconds then interrupt
const timedProgram = Effect.gen(function*() {
  const fiber = yield* Effect.forkChild(program)
  yield* Effect.sleep("5 seconds")
  yield* Fiber.interrupt(fiber)
})
repetition
Source effect/Effect.ts:751513 lines
export const forever: <
  Arg extends Effect<any, any, any> | {
    readonly disableYield?: boolean | undefined
  } | undefined = {
    readonly disableYield?: boolean | undefined
  }
>(
  effectOrOptions?: Arg,
  options?: {
    readonly disableYield?: boolean | undefined
  } | undefined
) => [Arg] extends [Effect<infer _A, infer _E, infer _R>] ? Effect<never, _E, _R>
  : <A, E, R>(self: Effect<A, E, R>) => Effect<never, E, R> = internal.forever
Referenced by 26 symbols