mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
'use cache'
|
|
|
|
import { cacheTag } from 'next/cache'
|
|
import { Suspense } from 'react'
|
|
|
|
const TEST_DATA_SERVICE_URL = process.env.TEST_DATA_SERVICE_URL
|
|
const ARTIFICIAL_DELAY = 3000
|
|
|
|
async function Greeting() {
|
|
cacheTag('random-greeting')
|
|
if (!TEST_DATA_SERVICE_URL) {
|
|
// If environment variable is not set, resolve automatically after a delay.
|
|
// This is so you can run the test app locally without spinning up a
|
|
// data server.
|
|
await new Promise<void>((resolve) =>
|
|
setTimeout(() => resolve(), ARTIFICIAL_DELAY)
|
|
)
|
|
// Return a random greeting
|
|
return ['Hello', 'Hi', 'Hey', 'Howdy'][Math.floor(Math.random() * 4)]
|
|
}
|
|
const response = await fetch(TEST_DATA_SERVICE_URL + '?key=random-greeting')
|
|
const text = await response.text()
|
|
if (response.status !== 200) {
|
|
throw new Error(text)
|
|
}
|
|
return (
|
|
<>
|
|
<h1>Greeting</h1>
|
|
<div id="greeting">{text}</div>
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default async function Page() {
|
|
return (
|
|
<Suspense fallback="Loading...">
|
|
<Greeting />
|
|
</Suspense>
|
|
)
|
|
}
|