effect-io-ai

Package: effect
Module: RequestResolver

RequestResolver.setDelayEffect

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")
  })
)

Signature

declare 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>; }

Source

Since v4.0.0