Hyperlinkv0.8.0-beta.28

Effect

Effect.onInterruptconsteffect/Effect.ts:7294
<XE, XR>(
  finalizer: (interruptors: ReadonlySet<number>) => Effect<void, XE, XR>
): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | XE, R | XR>
<A, E, R, XE, XR>(
  self: Effect<A, E, R>,
  finalizer: (interruptors: ReadonlySet<number>) => Effect<void, XE, XR>
): Effect<A, E | XE, R | XR>

Runs the specified finalizer effect if this effect is interrupted.

Example (Running cleanup on interruption)

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

const task = Effect.forever(Effect.succeed("working..."))

const program = Effect.onInterrupt(
  task,
  () => Console.log("Task was interrupted, cleaning up...")
)

const fiber = Effect.runFork(program)
// Later interrupt the task
Effect.runFork(Fiber.interrupt(fiber))
// Output: Task was interrupted, cleaning up...
interruption
Source effect/Effect.ts:72949 lines
export const onInterrupt: {
  <XE, XR>(
    finalizer: (interruptors: ReadonlySet<number>) => Effect<void, XE, XR>
  ): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E | XE, R | XR>
  <A, E, R, XE, XR>(
    self: Effect<A, E, R>,
    finalizer: (interruptors: ReadonlySet<number>) => Effect<void, XE, XR>
  ): Effect<A, E | XE, R | XR>
} = internal.onInterrupt
Referenced by 3 symbols