MCPcopy Create free account
hub / github.com/brillout/react-streaming / useAsync

Function useAsync

src/server/useAsync.ts:13–31  ·  view source on GitHub ↗
(keyValue: unknown, asyncFn: () => T)

Source from the content-addressed store, hash-verified

11import type { StreamReturnUtils } from './renderToStream.js'
12
13function useAsync<T>(keyValue: unknown, asyncFn: () => T): Awaited<T> {
14 assertKey(keyValue)
15 const key = stringifyKey(keyValue)
16 const elementId = useId()
17
18 const streamUtils = useStream()
19 assert(streamUtils)
20
21 const resolver = async () => {
22 const value = await asyncFn()
23 provideInitData(streamUtils, { key, value, elementId })
24 return value
25 }
26
27 const suspenses = useSuspenseData()
28 assert(suspenses)
29
30 return useSuspense({ suspenses, resolver, key, elementId, asyncFnName: asyncFn.name })
31}
32
33// See consumer getInitData()
34function provideInitData(streamUtils: StreamReturnUtils, initData: InitData) {

Callers

nothing calls this directly

Calls 6

assertKeyFunction · 0.85
stringifyKeyFunction · 0.85
assertFunction · 0.85
useSuspenseDataFunction · 0.85
useSuspenseFunction · 0.85
useStreamFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…