File tree Expand file tree Collapse file tree 3 files changed +97
-4
lines changed
src/internal/client/reactivity
tests/runtime-runes/samples/async-redirect-initial Expand file tree Collapse file tree 3 files changed +97
-4
lines changed Original file line number Diff line number Diff line change @@ -145,10 +145,6 @@ export function async_derived(fn, location) {
145145 const handler = ( value , error = undefined ) => {
146146 prev = null ;
147147
148- if ( ( parent . f & DESTROYED ) !== 0 ) {
149- return ;
150- }
151-
152148 from_async_derived = null ;
153149
154150 if ( should_suspend ) {
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+ async test ( { assert, target } ) {
6+ const [ a , b , c , ok ] = target . querySelectorAll ( 'button' ) ;
7+
8+ assert . htmlEqual (
9+ target . innerHTML ,
10+ `
11+ <h1>b</h1>
12+ <button>a</button>
13+ <button>b</button>
14+ <button>c</button>
15+ <button>ok</button>
16+ <p>pending...</p>
17+ `
18+ ) ;
19+
20+ await Promise . resolve ( ) ;
21+ await Promise . resolve ( ) ;
22+ await Promise . resolve ( ) ;
23+
24+ assert . htmlEqual (
25+ target . innerHTML ,
26+ `
27+ <h1>c</h1>
28+ <button>a</button>
29+ <button>b</button>
30+ <button>c</button>
31+ <button>ok</button>
32+ <p>c</p>
33+ `
34+ ) ;
35+
36+ flushSync ( ( ) => ok . click ( ) ) ;
37+
38+ flushSync ( ( ) => b . click ( ) ) ;
39+ await Promise . resolve ( ) ;
40+ await Promise . resolve ( ) ;
41+
42+ assert . htmlEqual (
43+ target . innerHTML ,
44+ `
45+ <h1>b</h1>
46+ <button>a</button>
47+ <button>b</button>
48+ <button>c</button>
49+ <button>ok</button>
50+ <p>b</p>
51+ `
52+ ) ;
53+ }
54+ } ) ;
Original file line number Diff line number Diff line change 1+ <script lang =ts >
2+ let route = $state (' b' );
3+ let ok = $state (false );
4+
5+ function goto(r ) {
6+ return Promise .resolve ().then (() => {
7+ route = r ;
8+ throw new Error (' nope' );
9+ });
10+ }
11+ </script >
12+
13+ <h1 >{route }</h1 >
14+ <button onclick ={() => route = ' a' }>a</button >
15+ <button onclick ={() => route = ' b' }>b</button >
16+ <button onclick ={() => route = ' c' }>c</button >
17+ <button onclick ={() => ok = true }>ok</button >
18+
19+ <svelte:boundary >
20+ {#if route === ' a' }
21+ <p >a</p >
22+ {/if }
23+
24+ {#if route === ' b' }
25+ {#if ok }
26+ <p >b</p >
27+ {:else }
28+ {await goto (' c' )}
29+ {/if }
30+ {/if }
31+
32+ {#if route === ' c' }
33+ <p >c</p >
34+ {/if }
35+
36+ {#snippet pending ()}
37+ <p >pending...</p >
38+ {/ snippet }
39+
40+ {#snippet failed (error , reset )}
41+ <button onclick ={reset }>retry</button >
42+ {/ snippet }
43+ </svelte:boundary >
You can’t perform that action at this time.
0 commit comments