File tree 3 files changed +55
-0
lines changed
packages/svelte/tests/runtime-runes/samples/async-prop
3 files changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ <script >
2
+ let { num } = $props ();
3
+ </script >
4
+
5
+ <p >{num }</p >
Original file line number Diff line number Diff line change
1
+ import { tick } from 'svelte' ;
2
+ import { deferred } from '../../../../src/internal/shared/utils.js' ;
3
+ import { test } from '../../test' ;
4
+
5
+ /** @type {ReturnType<typeof deferred> } */
6
+ let d ;
7
+
8
+ export default test ( {
9
+ html : `<p>pending</p>` ,
10
+
11
+ get props ( ) {
12
+ d = deferred ( ) ;
13
+
14
+ return {
15
+ promise : d . promise
16
+ } ;
17
+ } ,
18
+
19
+ async test ( { assert, target, component } ) {
20
+ d . resolve ( 'hello' ) ;
21
+ await Promise . resolve ( ) ;
22
+ await Promise . resolve ( ) ;
23
+ await Promise . resolve ( ) ;
24
+ await tick ( ) ;
25
+ assert . htmlEqual ( target . innerHTML , '<p>hello</p>' ) ;
26
+
27
+ d = deferred ( ) ;
28
+ component . promise = d . promise ;
29
+ await tick ( ) ;
30
+ assert . htmlEqual ( target . innerHTML , '<p>pending</p>' ) ;
31
+
32
+ d . resolve ( 'hello again' ) ;
33
+ await Promise . resolve ( ) ;
34
+ await tick ( ) ;
35
+ assert . htmlEqual ( target . innerHTML , '<p>hello again</p>' ) ;
36
+ }
37
+ } ) ;
Original file line number Diff line number Diff line change
1
+ <script >
2
+ import Child from ' ./Child.svelte' ;
3
+
4
+ let { promise } = $props ();
5
+ </script >
6
+
7
+ <svelte:boundary >
8
+ <Child value ={await promise } />
9
+
10
+ {#snippet pending ()}
11
+ <p >pending</p >
12
+ {/ snippet }
13
+ </svelte:boundary >
You can’t perform that action at this time.
0 commit comments