File tree Expand file tree Collapse file tree 2 files changed +72
-0
lines changed
packages/svelte/tests/runtime-runes/samples/async-waterfall-on-init Expand file tree Collapse file tree 2 files changed +72
-0
lines changed Original file line number Diff line number Diff line change 1+ import { flushSync , tick } from 'svelte' ;
2+ import { test } from '../../test' ;
3+
4+ export default test ( {
5+ html : `
6+ <button>resolve 1</button>
7+ <button>resolve 2</button>
8+ <hr>
9+ <p>pending</p>
10+ ` ,
11+
12+ async test ( { assert, target } ) {
13+ const [ button1 , button2 ] = target . querySelectorAll ( 'button' ) ;
14+
15+ flushSync ( ( ) => button1 . click ( ) ) ;
16+ await Promise . resolve ( ) ;
17+ await Promise . resolve ( ) ;
18+ await Promise . resolve ( ) ;
19+ await tick ( ) ;
20+ flushSync ( ) ;
21+
22+ assert . htmlEqual (
23+ target . innerHTML ,
24+ `
25+ <button>resolve 1</button>
26+ <button>resolve 2</button>
27+ <hr>
28+ <p>pending</p>
29+ `
30+ ) ;
31+
32+ flushSync ( ( ) => button2 . click ( ) ) ;
33+ await Promise . resolve ( ) ;
34+ await Promise . resolve ( ) ;
35+ await Promise . resolve ( ) ;
36+ await tick ( ) ;
37+ flushSync ( ) ;
38+
39+ assert . htmlEqual (
40+ target . innerHTML ,
41+ `
42+ <button>resolve 1</button>
43+ <button>resolve 2</button>
44+ <hr>
45+ <button>0</button>
46+ <p>true</p>
47+ `
48+ ) ;
49+ }
50+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let d1 = Promise .withResolvers ();
3+ let d2 = Promise .withResolvers ();
4+
5+ let count = $state (0 );
6+ </script >
7+
8+ <button onclick ={() => d1 .resolve (true )}>resolve 1</button >
9+ <button onclick ={() => d2 .resolve (true )}>resolve 2</button >
10+
11+ <hr >
12+
13+ <svelte:boundary >
14+ {#if await d1 .promise }
15+ <button onclick ={() => count += 1 }>{count }</button >
16+ <p >{await d2 .promise }</p >
17+ {/if }
18+
19+ {#snippet pending ()}
20+ <p >pending</p >
21+ {/ snippet }
22+ </svelte:boundary >
You can’t perform that action at this time.
0 commit comments