Hyperlinkv0.8.0-beta.28

Scope

Scope.closeconsteffect/Scope.ts:520
<A, E>(self: Scope, exit: Exit<A, E>): Effect<void>

Closes a scope and runs its registered finalizers.

When to use

Use to close a scope manually with a specific exit value.

Details

Finalizers run in the scope's configured order and receive the supplied Exit.

Example (Running scope finalizers)

import { Console, Effect, Exit, Scope } from "effect"

const resourceManagement = Effect.gen(function*() {
  const scope = yield* Scope.make("sequential")

  // Add multiple finalizers
  yield* Scope.addFinalizer(scope, Console.log("Close database connection"))
  yield* Scope.addFinalizer(scope, Console.log("Close file handle"))
  yield* Scope.addFinalizer(scope, Console.log("Release memory"))

  // Do some work...
  yield* Console.log("Performing operations...")

  // Close scope - finalizers run in reverse order of registration
  yield* Scope.close(scope, Exit.succeed("Success!"))
  // Output: "Release memory", "Close file handle", "Close database connection"
})
combinators
Source effect/Scope.ts:5201 lines
export const close: <A, E>(self: Scope, exit: Exit<A, E>) => Effect<void> = effect.scopeClose
Referenced by 25 symbols