(keyValue: unknown, asyncFn: () => T)
| 11 | import type { StreamReturnUtils } from './renderToStream.js' |
| 12 | |
| 13 | function 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() |
| 34 | function provideInitData(streamUtils: StreamReturnUtils, initData: InitData) { |
nothing calls this directly
no test coverage detected
searching dependent graphs…