26 lines
689 B
TypeScript
26 lines
689 B
TypeScript
import * as Array from "effect/Array"
|
|
import * as Effect from "effect/Effect"
|
|
import * as Exit from "effect/Exit"
|
|
import * as Request from "effect/Request"
|
|
import * as Resolver from "effect/RequestResolver"
|
|
|
|
class GetNameById extends Request.TaggedClass("GetNameById")<{
|
|
readonly id: number
|
|
}, string> {}
|
|
|
|
const UserResolver = Resolver.make<GetNameById>((entries) =>
|
|
Effect.sync(() => {
|
|
for (const entry of entries) {
|
|
entry.completeUnsafe(Exit.succeed(`User ${entry.request.id}`))
|
|
}
|
|
})
|
|
)
|
|
|
|
const effect = Effect.forEach(
|
|
Array.range(1, 100_000),
|
|
(id) => Effect.request(new GetNameById({ id }), UserResolver),
|
|
{ concurrency: "unbounded" }
|
|
)
|
|
|
|
Effect.runFork(effect)
|