Hyperlinkv0.8.0-beta.28

Channel

Channel.callbackArrayconsteffect/Channel.ts:510
<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<
  Arr.NonEmptyReadonlyArray<A>,
  E,
  void,
  unknown,
  unknown,
  unknown,
  Exclude<R, Scope.Scope>
>

Creates a Channel that interacts with a callback function using a queue, emitting arrays.

Example (Creating array channels from callbacks)

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

const channel = Channel.callbackArray<number>(Effect.fn(function*(queue) {
  yield* Queue.offer(queue, 1)
  yield* Queue.offer(queue, 2)
}))
// Emits arrays of numbers instead of individual numbers
constructors
Source effect/Channel.ts:5108 lines
export const callbackArray = <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<Arr.NonEmptyReadonlyArray<A>, E, void, unknown, unknown, unknown, Exclude<R, Scope.Scope>> =>
  fromTransform((_, scope) => Effect.map(asyncQueue(scope, f, options), Queue.takeAll))
Referenced by 1 symbols