Hyperlinkv0.8.0-beta.28

Effect

Effect.callbackconsteffect/Effect.ts:1200
<A, E = never, R = never>(
  register: (
    this: Scheduler,
    resume: (effect: Effect<A, E, R>) => void,
    signal: AbortSignal
  ) => void | Effect<void, never, R>
): Effect<A, E, R>

Creates an Effect from a callback-based asynchronous API.

When to use

Use when you need to integrate APIs that complete through callbacks instead of returning a Promise.

Details

The registration function receives a resume callback and, when requested, an AbortSignal. Call resume at most once with the effect that should complete the fiber; later calls are ignored. Return an optional cleanup effect from the registration function to run if the fiber is interrupted.

Example (Integrating callback APIs)

import { Effect } from "effect"

const delay = (ms: number) =>
  Effect.callback<void>((resume) => {
    const timeoutId = setTimeout(() => {
      resume(Effect.void)
    }, ms)
    // Cleanup function for interruption
    return Effect.sync(() => clearTimeout(timeoutId))
  })

const program = delay(1000)
constructors
Source effect/Effect.ts:12007 lines
export const callback: <A, E = never, R = never>(
  register: (
    this: Scheduler,
    resume: (effect: Effect<A, E, R>) => void,
    signal: AbortSignal
  ) => void | Effect<void, never, R>
) => Effect<A, E, R> = internal.callback
Referenced by 5 symbols