學習如何在 Svelte 模板中處理 Promises
Promises 是一種在 JavaScript 中處理異步事件的強大工具。
ES2017 中相對較新引入的 await
語法使得使用 Promises 更加簡單。
Svelte 在模板中提供了 {#await}
語法,以直接處理模板層級的 Promises。
我們可以等待 Promises 解析,並為 Promise 的各種狀態(未解析、已解析和被拒絕)定義不同的 UI。
這是它的工作原理。我們定義一個 Promise,然後使用 {#await}
區塊等待其解析。
一旦 Promise 解析完成,結果將傳遞給 {:then}
區塊:
<script>
const fetchImage = (async () => {
const response = await fetch('https://dog.ceo/api/breeds/image/random')
return await response.json()
})()
</script>
{#await fetchImage}
<p>...等待中</p>
{:then data}
<img src={data.message} alt="狗圖片" />
{/await}
您可以通過添加 {:catch}
區塊來檢測 Promise 的拒絕:
{#await fetchImage}
<p>...等待中</p>
{:then data}
<img src={data.message} alt="狗圖片" />
{:catch error}
<p>發生錯誤!</p>
{/await}
運行範例:https://svelte.dev/repl/70e61d6cc91345cdaca2db9b7077a941