You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/packages/svelte/tests/runtime-runes/samples/async-dont-rebase-new-batch-2/main.svelte

30 lines
555 B

<script>
import { untrack } from "svelte";
let a = $state(0);
let b = $state(0);
let c = $state(0);
const queued = [];
function delay(v) {
console.log('delay ' + v);
if (!v) return v;
return new Promise(resolve => {
queued.push(() => resolve(v));
});
}
$effect(() => {
if (b + c === 0 || b + c > 2) return;
console.log('effect run')
untrack(() => {
b++;
c++;
})
})
</script>
<button onclick={() => { a++; b++; }}>increment</button>
<button onclick={() => queued.shift()?.()}>resolve</button>
{await delay(a + b + c)}