Hyperlinkv0.8.0-beta.28

RequestResolver

RequestResolver.setDelayEffectconsteffect/RequestResolver.ts:566
(delay: Effect.Effect<void>): <A extends Request.Any>(
  self: RequestResolver<A>
) => RequestResolver<A>
<A extends Request.Any>(
  self: RequestResolver<A>,
  delay: Effect.Effect<void>
): RequestResolver<A>

Sets the batch delay effect for this request resolver.

Example (Setting an effectful batch delay)

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

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

const resolver = RequestResolver.make<GetDataRequest>((entries) =>
  Effect.sync(() => {
    for (const entry of entries) {
      entry.completeUnsafe(Exit.succeed("data"))
    }
  })
)

// Set a custom delay effect (e.g., with logging)
const resolverWithCustomDelay = RequestResolver.setDelayEffect(
  resolver,
  Effect.gen(function*() {
    yield* Effect.log("Waiting before processing batch...")
    yield* Effect.sleep("50 millis")
  })
)
delay
export const setDelayEffect: {
  (delay: Effect.Effect<void>): <A extends Request.Any>(self: RequestResolver<A>) => RequestResolver<A>
  <A extends Request.Any>(self: RequestResolver<A>, delay: Effect.Effect<void>): RequestResolver<A>
} = dual(
  2,
  <A extends Request.Any>(self: RequestResolver<A>, delay: Effect.Effect<void>): RequestResolver<A> =>
    makeWith({
      ...self,
      delay
    })
)