Package: effect
Module: Effect
Ensures that a cleanup function runs whether this effect succeeds, fails, or is interrupted.
Example (Observing every exit)
import { Console, Effect, Exit } from "effect"
const task = Effect.succeed(42)
const program = Effect.onExit(task, (exit) =>
Console.log(
Exit.isSuccess(exit)
? `Task succeeded with: ${exit.value}`
: `Task failed: ${Exit.isFailure(exit) ? exit.cause : "interrupted"}`
))
Effect.runPromise(program).then(console.log)
// Output:
// Task succeeded with: 42
// 42
Signature
declare const onExit: { <A, E, XE = never, XR = never>(f: (exit: Exit.Exit<A, E>) => Effect<void, XE, XR>): <R>(self: Effect<A, E, R>) => Effect<A, E | XE, R | XR>; <A, E, R, XE = never, XR = never>(self: Effect<A, E, R>, f: (exit: Exit.Exit<A, E>) => Effect<void, XE, XR>): Effect<A, E | XE, R | XR>; }
Since v2.0.0