mirror of https://github.com/sveltejs/svelte
				
				
				
			
							parent
							
								
									cfa87a9c37
								
							
						
					
					
						commit
						925dbebdd6
					
				@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					import { tick } from 'svelte';
 | 
				
			||||||
 | 
					import { test } from '../../test';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default test({
 | 
				
			||||||
 | 
						async test({ assert, target }) {
 | 
				
			||||||
 | 
							const [increment, shift] = target.querySelectorAll('button');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							shift.click();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							shift.click();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							assert.htmlEqual(
 | 
				
			||||||
 | 
								target.innerHTML,
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
									<button>0</button>
 | 
				
			||||||
 | 
									<button>shift</button>
 | 
				
			||||||
 | 
									<p>even</p>
 | 
				
			||||||
 | 
									<p>0</p>
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							increment.click();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							assert.htmlEqual(
 | 
				
			||||||
 | 
								target.innerHTML,
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
									<button>1</button>
 | 
				
			||||||
 | 
									<button>shift</button>
 | 
				
			||||||
 | 
									<p>even</p>
 | 
				
			||||||
 | 
									<p>0</p>
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							shift.click();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							assert.htmlEqual(
 | 
				
			||||||
 | 
								target.innerHTML,
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
									<button>1</button>
 | 
				
			||||||
 | 
									<button>shift</button>
 | 
				
			||||||
 | 
									<p>odd</p>
 | 
				
			||||||
 | 
									<p>loading...</p>
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							shift.click();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							assert.htmlEqual(
 | 
				
			||||||
 | 
								target.innerHTML,
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
									<button>1</button>
 | 
				
			||||||
 | 
									<button>shift</button>
 | 
				
			||||||
 | 
									<p>odd</p>
 | 
				
			||||||
 | 
									<p>1</p>
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
 | 
							);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						let resolvers = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						function push(value) {
 | 
				
			||||||
 | 
							const { promise, resolve } = Promise.withResolvers();
 | 
				
			||||||
 | 
							resolvers.push(() => resolve(value));
 | 
				
			||||||
 | 
							return promise;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let count = $state(0);
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<button onclick={() => count += 1}>{$state.eager(count)}</button>
 | 
				
			||||||
 | 
					<button onclick={() => resolvers.shift()?.()}>shift</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<svelte:boundary>
 | 
				
			||||||
 | 
						{#if await push(count) % 2 === 0}
 | 
				
			||||||
 | 
							<p>even</p>
 | 
				
			||||||
 | 
						{:else}
 | 
				
			||||||
 | 
							<p>odd</p>
 | 
				
			||||||
 | 
						{/if}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{#key count}
 | 
				
			||||||
 | 
							<svelte:boundary>
 | 
				
			||||||
 | 
								<p>{await push(count)}</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								{#snippet pending()}
 | 
				
			||||||
 | 
									<p>loading...</p>
 | 
				
			||||||
 | 
								{/snippet}
 | 
				
			||||||
 | 
							</svelte:boundary>
 | 
				
			||||||
 | 
						{/key}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{#snippet pending()}
 | 
				
			||||||
 | 
							<p>loading...</p>
 | 
				
			||||||
 | 
						{/snippet}
 | 
				
			||||||
 | 
					</svelte:boundary>
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue