File tree Expand file tree Collapse file tree 3 files changed +25
-8
lines changed
tests/runtime-runes/samples/get-abort-signal Expand file tree Collapse file tree 3 files changed +25
-8
lines changed Original file line number Diff line number Diff line change 22import { current_component } from './internal/server/context.js' ;
33import { noop } from './internal/shared/utils.js' ;
44import * as e from './internal/server/errors.js' ;
5+ import { STALE_REACTION } from '#client/constants' ;
56
67/** @param {() => void } fn */
78export function onDestroy ( fn ) {
@@ -42,7 +43,7 @@ export function getAbortSignal() {
4243 if ( controller === null ) {
4344 const c = ( controller = new AbortController ( ) ) ;
4445 queueMicrotask ( ( ) => {
45- c . abort ( ) ;
46+ c . abort ( STALE_REACTION ) ;
4647 controller = null ;
4748 } ) ;
4849 }
Original file line number Diff line number Diff line change @@ -3,14 +3,24 @@ import { test } from '../../test';
33export default test ( {
44 html : `<button>increment</button><p>loading...</p>` ,
55
6- async test ( { assert, target } ) {
6+ async test ( { assert, target, variant, logs } ) {
7+ await new Promise ( ( f ) => setTimeout ( f , 50 ) ) ;
8+
9+ if ( variant === 'hydrate' ) {
10+ assert . deepEqual ( logs , [ 'aborted' , { stale : true } ] ) ;
11+ }
12+
13+ logs . length = 0 ;
14+
715 const [ button ] = target . querySelectorAll ( 'button' ) ;
816
9- await new Promise ( ( f ) => setTimeout ( f , 50 ) ) ; // TODO replace with `tick` once `await` lands
17+ await new Promise ( ( f ) => setTimeout ( f , 50 ) ) ;
1018 assert . htmlEqual ( target . innerHTML , '<button>increment</button><p>0</p>' ) ;
1119
1220 button . click ( ) ;
13- await new Promise ( ( f ) => setTimeout ( f , 50 ) ) ; // TODO replace with `tick` once `await` lands
21+ await new Promise ( ( f ) => setTimeout ( f , 50 ) ) ;
1422 assert . htmlEqual ( target . innerHTML , '<button>increment</button><p>2</p>' ) ;
23+
24+ assert . deepEqual ( logs , [ 'aborted' , { stale : true } ] ) ;
1525 }
1626} ) ;
Original file line number Diff line number Diff line change 44 let count = $state (0 );
55
66 let delayed_count = $derived .by (async () => {
7- const response = await fetch (` data:text/plain;charset=utf-8,${ count} ` , {
8- signal: getAbortSignal ()
9- });
7+ let c = count;
108
11- return await response .json ();
9+ const signal = getAbortSignal ();
10+
11+ await new Promise ((f ) => setTimeout (f));
12+
13+ if (signal .aborted ) {
14+ console .log (' aborted' , signal .reason );
15+ }
16+
17+ return c;
1218 });
1319 </script >
1420
You can’t perform that action at this time.
0 commit comments