Hyperlinkv0.8.0-beta.28

Effect

Effect.requestconsteffect/Effect.ts:8457
<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
>

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)
})
requests & batchingrequestUnsafe
Source effect/Effect.ts:84579 lines
export 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>
} = internalRequest.request