Package: effect
Module: Effect
Runs an effect synchronously and returns the result as an Exit type.
Details
This function executes the provided effect synchronously and returns an Exit
type that encapsulates the outcome of the effect:
Success.Failure containing a Cause that explains
the failure.If the effect involves asynchronous operations, this function will return a Failure
with a Die cause, indicating that it cannot resolve the effect synchronously.
This makes the function suitable for use only with effects that are synchronous
in nature.
When to Use
Use this function when:
Exit type.Avoid using this function for effects that involve asynchronous operations, as it will fail with a Die cause.
Example (Handling Results as Exit)
import { Effect } from "effect"
console.log(Effect.runSyncExit(Effect.succeed(1)))
// Output:
// {
// _id: "Exit",
// _tag: "Success",
// value: 1
// }
console.log(Effect.runSyncExit(Effect.fail("my error")))
// Output:
// {
// _id: "Exit",
// _tag: "Failure",
// cause: {
// _id: "Cause",
// _tag: "Fail",
// failure: "my error"
// }
// }
Example (Asynchronous Operation Resulting in Die)
import { Effect } from "effect"
console.log(Effect.runSyncExit(Effect.promise(() => Promise.resolve(1))))
// Output:
// {
// _id: 'Exit',
// _tag: 'Failure',
// cause: {
// _id: 'Cause',
// _tag: 'Die',
// defect: [Fiber #0 cannot be resolved synchronously. This is caused by using runSync on an effect that performs async work] {
// fiber: [FiberRuntime],
// _tag: 'AsyncFiberException',
// name: 'AsyncFiberException'
// }
// }
// }
Signature
declare const runSyncExit: <A, E>(effect: Effect<A, E>) => Exit.Exit<A, E>
Since v2.0.0