Skip to main content

ほとんどの 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>