← Tous les chapitresChapitre 20 · ~40 min

Charger et paginer : skeletons, pages, scroll infini (JS vs TS)

Skalletons, pagination précédent/suivant, scroll infini et recherche serveur debouncée : des charges longue durée, avec puis sans lang="ts".

{#await} couvre promise, pending puis résolue : trois états explicitement encadrés.

  • La promesse doit être créée hors du {#await} pour rester référencée.
  • Sans TS, la donnée résolue reste any.
  • Avec lang="ts", la promesse typée Promise<Article[]> propage son type dans le template.
src/lib/Await.sveltesvelte
<script>
  let articles = $state([])

  async function charger() {
    const r = await fetch('/api/articles')
    return r.json()
  }
</script>

{#await charger()}
  <p>Chargement…</p>
{:then liste}
  <p>{liste.length} article(s)</p>
{:catch e}
  <p>Erreur : {e.message}</p>
{/await}