effect-io-ai

Package: effect
Module: RequestResolver

RequestResolver.setDelay

Sets the batch delay window for this request resolver to the specified duration.

Example (Setting a 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"))
    }
  })
)

// Add a 100ms delay to batch requests together
const delayedResolver = RequestResolver.setDelay(resolver, "100 millis")

// Can also use number for milliseconds
const delayedResolver2 = RequestResolver.setDelay(resolver, 100)

Signature

declare const setDelay: { (duration: Duration.Input): <A extends Request.Any>(self: RequestResolver<A>) => RequestResolver<A>; <A extends Request.Any>(self: RequestResolver<A>, duration: Duration.Input): RequestResolver<A>; }

Source

Since v4.0.0