Hyperlinkv0.8.0-beta.28

Channel

Channel.callbackconsteffect/Channel.ts:483
<A, E = never, R = never>(
  f: (
    queue: Queue.Queue<A, E | Cause.Done>
  ) => Effect.Effect<unknown, E, R | Scope.Scope>,
  options?: {
    readonly bufferSize?: number | undefined
    readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
  }
): Channel<A, E, void, unknown, unknown, unknown, Exclude<R, Scope.Scope>>

Creates a Channel that interacts with a callback function using a queue.

Example (Creating channels from callbacks)

import { Channel, Effect, Queue } from "effect"

const channel = Channel.callback<number>((queue) =>
  Effect.gen(function*() {
    yield* Queue.offer(queue, 1)
    yield* Queue.offer(queue, 2)
    yield* Queue.offer(queue, 3)
  })
)
constructors
Source effect/Channel.ts:4838 lines
export const callback = <A, E = never, R = never>(
  f: (queue: Queue.Queue<A, E | Cause.Done>) => Effect.Effect<unknown, E, R | Scope.Scope>,
  options?: {
    readonly bufferSize?: number | undefined
    readonly strategy?: "sliding" | "dropping" | "suspend" | undefined
  }
): Channel<A, E, void, unknown, unknown, unknown, Exclude<R, Scope.Scope>> =>
  fromTransform((_, scope) => Effect.map(asyncQueue(scope, f, options), Queue.take))