Promise tests
All checks were successful
Lint / lint (push) Successful in 11s

This commit is contained in:
Julien Valverdé
2025-02-18 05:18:34 +01:00
parent 734c84824c
commit 933b061b5d

View File

@@ -1,8 +1,9 @@
import { R } from "@/reffuse" import { R } from "@/reffuse"
import { HttpClient } from "@effect/platform" import { HttpClient } from "@effect/platform"
import { Text } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router" import { createFileRoute } from "@tanstack/react-router"
import { Console, Effect } from "effect" import { Console, Effect } from "effect"
import { use, useMemo } from "react" import { Suspense, use, useEffect, useMemo } from "react"
export const Route = createFileRoute("/promise")({ export const Route = createFileRoute("/promise")({
@@ -10,19 +11,32 @@ export const Route = createFileRoute("/promise")({
}) })
function RouteComponent() { function RouteComponent() {
return (
<Suspense fallback={<Text>Loading...</Text>}>
<AsyncComponent />
</Suspense>
)
}
const runPromise = R.useRunPromise() function AsyncComponent() {
const promise = useMemo(() => HttpClient.HttpClient.pipe( // const runPromise = R.useRunPromise()
Effect.flatMap(client => client.get("https://www.uuidtools.com/api/generate/v4")),
HttpClient.withTracerPropagation(false),
Effect.flatMap(res => res.json),
Effect.tap(Console.log),
Effect.scoped, // const promise = useMemo(() => HttpClient.HttpClient.pipe(
runPromise, // Effect.flatMap(client => client.get("https://www.uuidtools.com/api/generate/v4")),
), [runPromise]) // HttpClient.withTracerPropagation(false),
// Effect.flatMap(res => res.json),
// Effect.tap(Console.log),
// Effect.scoped,
// runPromise,
// ), [runPromise])
const promise = useMemo(() => new Promise<string>((resolve => {
setTimeout(() => { resolve("prout") }, 500)
})), [])
console.log("React.use invoked with:", promise);
const value = use(promise) const value = use(promise)