effect-io-ai

Package: effect
Module: Effect

Effect.onInterrupt

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...

Signature

declare 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>; }

Source

Since v2.0.0