So I have this server function
'use server';
export async function simulateWithDelay(
index: number,
): Promise<{ index: number; time: string }> {
console.log(`calling ${index} ` + new Date().toLocaleTimeString());
return new Promise((resolve) => {
setTimeout(() => {
resolve({ index: index, time: new Date().toLocaleTimeString() });
}, 5000);
});
}
And a context provider:
export function AppContextProvider({ children }: { children: ReactNode }) {
useEffect(() => {
simulateWithDelay(1).then(console.log);
simulateWithDelay(2).then(console.log);
}, []);
return (
<AppContext.Provider>
{children}
</AppContext.Provider>
);
}
However, in the browser console I only see:
{index: 1, time: ‘5:40:48 PM’}
..and in the server console:
calling 1 5:40:43 PM
If I change to async/await pattern or chain the promises like:
useEffect(() => {
simulateWithDelay(1).then(x => {
console.log(x);
simulateWithDelay(2).then(console.log);
});
}, []);
Both Promises are resolved as expected.