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-block-reject-each-dur.../main.svelte

39 lines
923 B

<script>
let count = $state(0);
let deferreds = [];
function push(_just_so_that_template_is_reactive_) {
const deferred = Promise.withResolvers();
deferreds.push(deferred);
return deferred.promise;
}
</script>
<button onclick={() => count += 1}>increment</button>
<button onclick={() => deferreds.shift()?.resolve([count])}>resolve</button>
<button onclick={() => deferreds.shift()?.reject(new Error('oops'))}>reject</button>
<svelte:boundary>
{#if count % 2 === 0}
<p>true</p>
{#each await push(count) as count}<p>{count}</p>{/each}
{:else}
<p>false</p>
{#each await push(count) as count}<p>{count}</p>{/each}
{/if}
{#if count % 2 === 0}
<p>true</p>
{#each await push(count) as count}<p>{count}</p>{/each}
{/if}
{#if count % 2 === 1}
<p>false</p>
{#each await push(count) as count}<p>{count}</p>{/each}
{/if}
{#snippet pending()}
<p>loading...</p>
{/snippet}
</svelte:boundary>