Skip to main content

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

App.svelte
{#await promise}
	<p>...waiting</p>
{:then number}
	<p>The number is {number}</p>
{:catch error}
	<p style="color: red">{error.message}</p>
{/await}

直近の promise だけが処理されるので、他の非同期処理の状態を気にする必要はありません。

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

{#await promise then number}
	<p>The number is {number}</p>
{/await}

Next: Events

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
	import { getRandomNumber } from './utils.js';
 
	let promise = getRandomNumber();
 
	function handleClick() {
		promise = getRandomNumber();
	}
</script>
 
<button on:click={handleClick}>
	generate random number
</button>
 
<p>...waiting</p>
 
initialising