diff --git a/src/lib/task.ts b/src/lib/task.ts index 98ac53b5..81e99da1 100644 --- a/src/lib/task.ts +++ b/src/lib/task.ts @@ -2,7 +2,7 @@ import { onDestroy } from 'svelte'; import { writable } from 'svelte/store'; type SvelteConcurrencyUtils = { - signal: AbortSignal; + abortController: AbortController; link: void }>(task: T) => T; }; @@ -52,7 +52,7 @@ export function task( cancel() { abort_controller.abort(); }, - perform(...args: undefined extends TArgs ? [] : [TArgs]) { + perform(...args: unknown[]) { abort_controller.signal.removeEventListener('abort', cancel_linked_and_update_store); abort_controller = new AbortController(); abort_controller.signal.addEventListener('abort', cancel_linked_and_update_store); @@ -65,7 +65,7 @@ export function task( try { // eslint-disable-next-line @typescript-eslint/no-explicit-any const gen_or_value = await gen_or_fun(args as any, { - signal: abort_controller.signal, + abortController: abort_controller, link, }); const is_generator = diff --git a/src/routes/accelerating-button/+page.svelte b/src/routes/accelerating-button/+page.svelte new file mode 100644 index 00000000..36d5f87f --- /dev/null +++ b/src/routes/accelerating-button/+page.svelte @@ -0,0 +1,41 @@ + + +

Hold down the buttons to accelerate:

+

Count: {count}

+ + + +

This example is inspired by + + ember-concurrency example "Accelerating Increment / Decrement Buttons" + +

diff --git a/src/routes/race/+page.svelte b/src/routes/race/+page.svelte new file mode 100644 index 00000000..7a157a44 --- /dev/null +++ b/src/routes/race/+page.svelte @@ -0,0 +1,69 @@ + + + + + + +{#each challengers as challenger} +
+ {challenger.name} + +
+{/each} + +{#if winner} +

The winner is {winner.name}

+{/if} \ No newline at end of file