Hyperlinkv0.8.0-beta.28

Effect

Effect.replicateEffectconsteffect/Effect.ts:7736
(
  n: number,
  options?: {
    readonly concurrency?: Concurrency | undefined
    readonly discard?: false | undefined
  }
): <A, E, R>(self: Effect<A, E, R>) => Effect<Array<A>, E, R>
(
  n: number,
  options: {
    readonly concurrency?: Concurrency | undefined
    readonly discard: true
  }
): <A, E, R>(self: Effect<A, E, R>) => Effect<void, E, R>
<A, E, R>(
  self: Effect<A, E, R>,
  n: number,
  options?: {
    readonly concurrency?: Concurrency | undefined
    readonly discard?: false | undefined
  }
): Effect<Array<A>, E, R>
<A, E, R>(
  self: Effect<A, E, R>,
  n: number,
  options: {
    readonly concurrency?: Concurrency | undefined
    readonly discard: true
  }
): Effect<void, E, R>

Performs this effect n times and collects results with Effect.all semantics.

When to use

Use when you want to run the repeated effects immediately, with optional concurrency control or result discarding.

Details

Use concurrency to control parallelism and discard: true to ignore results.

Example (Replicating an effect)

import { Console, Effect } from "effect"

const program = Effect.gen(function*() {
  const results = yield* Effect.replicateEffect(3)(Effect.succeed(1))
  yield* Console.log(results)
})
collecting
Source effect/Effect.ts:773620 lines
export const replicateEffect: {
  (
    n: number,
    options?: { readonly concurrency?: Concurrency | undefined; readonly discard?: false | undefined }
  ): <A, E, R>(self: Effect<A, E, R>) => Effect<Array<A>, E, R>
  (
    n: number,
    options: { readonly concurrency?: Concurrency | undefined; readonly discard: true }
  ): <A, E, R>(self: Effect<A, E, R>) => Effect<void, E, R>
  <A, E, R>(
    self: Effect<A, E, R>,
    n: number,
    options?: { readonly concurrency?: Concurrency | undefined; readonly discard?: false | undefined }
  ): Effect<Array<A>, E, R>
  <A, E, R>(
    self: Effect<A, E, R>,
    n: number,
    options: { readonly concurrency?: Concurrency | undefined; readonly discard: true }
  ): Effect<void, E, R>
} = internal.replicateEffect