effect-io-ai

Package: effect
Module: Effect

Effect.request

Executes a request using the provided resolver.

When to use

Use when you need resolver-driven batching for a typed Request.

Example (Executing a request through a resolver)

import { Console, Effect, Exit, Request, RequestResolver } from "effect"

interface GetUser extends Request.Request<string> {
  readonly _tag: "GetUser"
  readonly id: number
}
const GetUser = Request.tagged<GetUser>("GetUser")

const resolver = RequestResolver.make<GetUser>(
  Effect.fnUntraced(function*(entries) {
    for (const entry of entries) {
      yield* Request.complete(entry, Exit.succeed(`user-${entry.request.id}`))
    }
  })
)

const program = Effect.gen(function*() {
  const name = yield* Effect.request(GetUser({ id: 1 }), resolver)
  yield* Console.log(name)
})

See

Signature

declare const request: { <A extends Request.Any, EX = never, RX = never>(resolver: RequestResolver<A> | Effect<RequestResolver<A>, EX, RX>): (self: A) => Effect<Request.Success<A>, Request.Error<A> | EX, Request.Services<A> | RX>; <A extends Request.Any, EX = never, RX = never>(self: A, resolver: RequestResolver<A> | Effect<RequestResolver<A>, EX, RX>): Effect<Request.Success<A>, Request.Error<A> | EX, Request.Services<A> | RX>; }

Source

Since v2.0.0