Hyperlinkv0.8.0-beta.28

RequestResolver

RequestResolver.makeconsteffect/RequestResolver.ts:232
<A extends Request.Any>(
  runAll: (
    entries: NonEmptyArray<Request.Entry<A>>,
    key: unknown
  ) => Effect.Effect<void, Request.Error<A>>
): RequestResolver<A>

Constructs a request resolver with the specified method to run requests.

Example (Creating a request resolver)

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

// Define a request type
interface GetUserRequest extends Request.Request<string, Error> {
  readonly _tag: "GetUserRequest"
  readonly id: number
}
const GetUserRequest = Request.tagged<GetUserRequest>("GetUserRequest")

// Create a resolver that handles the requests
const UserResolver = RequestResolver.make<GetUserRequest>((entries) =>
  Effect.sync(() => {
    for (const entry of entries) {
      // Complete each request with a result
      entry.completeUnsafe(Exit.succeed(`User ${entry.request.id}`))
    }
  })
)

// Use the resolver to handle requests
const getUserEffect = Effect.request(GetUserRequest({ id: 123 }), UserResolver)
constructors
export const make = <A extends Request.Any>(
  runAll: (entries: NonEmptyArray<Request.Entry<A>>, key: unknown) => Effect.Effect<void, Request.Error<A>>
): RequestResolver<A> =>
  makeWith({
    batchKey: defaultKey,
    delay: Effect.yieldNow,
    collectWhile: constTrue,
    runAll
  })
Referenced by 6 symbols