main
js 22 lines 528 Bytes
Raw
1 let promise = null;
2 let isResolved = false;
3
4 export default function Suspend({children}) {
5 // This will suspend the content from rendering but only on the client.
6 // This is used to demo a slow loading app.
7 if (!isResolved) {
8 if (promise === null) {
9 promise = new Promise(resolve => {
10 setTimeout(
11 () => {
12 isResolved = true;
13 resolve();
14 },
15 typeof window === 'object' ? 6000 : 1000
16 );
17 });
18 }
19 throw promise;
20 }
21 return children;
22 }