Skip to main content
Basic Svelte
Introduction
Reactivity
Props
Logic
Events
Bindings
Classes and styles
Actions
Transitions
Advanced Svelte
Advanced reactivity
Reusing content
Motion
Advanced bindings
Advanced transitions
Context API
Special elements
<script module>
Next steps
Basic SvelteKit
Introduction
Routing
Loading data
Headers and cookies
Shared modules
Forms
API routes
$app/state
Errors and redirects
Advanced SvelteKit
Hooks
Page options
Link options
Advanced routing
Advanced loading
Environment variables
Conclusion

ほとんどの webアプリケーションでは、どこかの時点で非同期のデータを扱わなければなりません。Svelte ではマークアップの中で直接 promises の値を簡単に await することができます。

App
{#await promise}
	<p>...rolling</p>
{:then number}
	<p>you rolled a {number}!</p>
{:catch error}
	<p style="color: red">{error.message}</p>
{/await}

直近の promise だけが処理されるので、レースコンディション(race conditions)を気にする必要はありません。

promise が reject できないことがわかっている場合は、catch ブロックを省略することができます。また promise が resolve するまで何も表示したくない場合は、最初のブロックを省略することもできます。

{#await promise then number}
	<p>you rolled a {number}!</p>
{/await}

Edit this page on GitHub

1
2
3
4
5
6
7
8
9
10
11
12
<script>
	import { roll } from './utils.js';
 
	let promise = $state(roll());
</script>
 
<button onclick={() => promise = roll()}>
	roll the dice
</button>
 
<p>...rolling</p>