Bird
Raised Fist0
Svelteframework~10 mins

Await blocks ({#await}) in Svelte - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to show a loading message while waiting for the promise.

Svelte
<script>
  let dataPromise = fetch('/api/data').then(res => res.json());
</script>

{#await [1]
  <p>Loading...</p>
{/await}
Drag options to blanks, or click blank then click option'
AfetchData()
Bdata
CdataPromise
DpromiseData
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-promise variable inside the await block.
Forgetting to use the promise variable name.
2fill in blank
medium

Complete the code to display the resolved data inside the await block.

Svelte
{#await dataPromise}
  <p>Loading...</p>
{:then [1]
  <p>{user.name}</p>
{/await}
Drag options to blanks, or click blank then click option'
Auser
Bresponse
Cresult
Ddata
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different variable name than the one declared after :then.
Not declaring a variable after :then.
3fill in blank
hard

Fix the error in the await block to handle errors properly.

Svelte
{#await dataPromise}
  <p>Loading...</p>
{:then user}
  <p>{user.name}</p>
{:catch [1]
  <p>Error: {error.message}</p>
{/await}
Drag options to blanks, or click blank then click option'
Ae
Berr
Cexception
Derror
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different variable name than the one inside the error message.
Not declaring a variable after :catch.
4fill in blank
hard

Fill both blanks to show a loading message and handle the resolved data.

Svelte
{#await [1]
  <p>Loading data...</p>
{:then [2]
  <p>{info.title}</p>
{/await}
Drag options to blanks, or click blank then click option'
AfetchInfo()
BdataPromise
Cinfo
Dresult
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up the promise variable and the resolved data variable.
Using a function call instead of a promise variable in the await block.
5fill in blank
hard

Fill all three blanks to handle loading, success, and error states in the await block.

Svelte
{#await [1]
  <p>Loading...</p>
{:then [2]
  <p>{data.message}</p>
{:catch [3]
  <p>Error: {err.message}</p>
{/await}
Drag options to blanks, or click blank then click option'
AfetchMessage()
Bdata
Cerr
DmessagePromise
Attempts:
3 left
💡 Hint
Common Mistakes
Using inconsistent variable names between the catch block and inside it.
Not matching the promise variable name in the await block.

Practice

(1/5)
1. What is the main purpose of the {#await} block in Svelte?
easy
A. To handle asynchronous data by showing loading, success, and error states
B. To create loops for rendering lists
C. To define reactive variables
D. To style components conditionally

Solution

  1. Step 1: Understand the role of {#await} in Svelte

    The {#await} block is designed to handle promises and asynchronous data by showing different UI states while waiting, on success, or on error.
  2. Step 2: Compare with other options

    Creating loops is done with {#each}, defining reactive variables with let or $:, and styling conditionally with class: or style:, which are not the purpose of {#await}.
  3. Final Answer:

    To handle asynchronous data by showing loading, success, and error states -> Option A
  4. Quick Check:

    Await blocks = handle async states [OK]
Hint: Await blocks manage async loading and errors [OK]
Common Mistakes:
  • Confusing await blocks with loops
  • Thinking await blocks define reactive variables
  • Assuming await blocks are for styling
2. Which of the following is the correct syntax to start an await block in Svelte for a promise named dataPromise?
easy
A. {#await: dataPromise} ... {/await}
B. {#await (dataPromise)} ... {/await}
C. {#await await dataPromise} ... {/await}
D. {#await dataPromise} ... {/await}

Solution

  1. Step 1: Recall the basic syntax of await blocks

    The correct syntax is {#await promise} followed by the block content and closed with {/await}.
  2. Step 2: Analyze each option

    {#await dataPromise} ... {/await} matches the correct syntax. {#await (dataPromise)} ... {/await} adds unnecessary parentheses. {#await await dataPromise} ... {/await} repeats 'await' incorrectly. {#await: dataPromise} ... {/await} uses a colon which is invalid.
  3. Final Answer:

    {#await dataPromise} ... {/await} -> Option D
  4. Quick Check:

    Correct await syntax = {#await dataPromise} ... {/await} [OK]
Hint: Use {#await promise} without extra symbols [OK]
Common Mistakes:
  • Adding parentheses around the promise
  • Repeating the 'await' keyword inside the block
  • Using colons after #await
3. Given the following Svelte code snippet:
{#await fetchData()}

Loading...


:then data

{data.message}


:catch error

Error: {error.message}


{/await}

What will be displayed if fetchData() returns a promise that resolves to { message: 'Hello!' }?
medium
A.

Loading...

B.

Error: ...

C.

Hello!

D. Nothing will be displayed

Solution

  1. Step 1: Understand the promise resolution

    The promise returned by fetchData() resolves successfully with an object containing { message: 'Hello!' }.
  2. Step 2: Determine which await block section runs

    Since the promise resolves, the :then block runs, displaying {data.message} which is 'Hello!'.
  3. Final Answer:

    <p>Hello!</p> -> Option C
  4. Quick Check:

    Resolved promise shows then block [OK]
Hint: Resolved promise shows :then content [OK]
Common Mistakes:
  • Thinking loading shows after resolution
  • Confusing :catch with :then
  • Expecting no output on success
4. Identify the error in this Svelte await block:
{#await loadData()}

Loading...


:then result

{result}


:catch

Error occurred


{/await}
medium
A. Incorrect use of :then keyword
B. Missing variable name after :catch
C. No closing {/await} tag
D. Promises cannot be used in await blocks

Solution

  1. Step 1: Review the :catch syntax in await blocks

    The :catch block must include a variable name to capture the error, like :catch error.
  2. Step 2: Check the given code

    The code uses :catch without a variable name, which is a syntax error.
  3. Final Answer:

    Missing variable name after :catch -> Option B
  4. Quick Check:

    :catch needs error variable [OK]
Hint: Always name error after :catch [OK]
Common Mistakes:
  • Omitting error variable in :catch
  • Forgetting {/await} closing tag
  • Misusing :then keyword
5. You want to show a loading spinner while waiting for userData promise, display the user's name on success, and show a retry button on error. Which Svelte await block correctly implements this behavior?
hard
A. {#await userData}

:then user

{user.name}


:catch error
Retry
{/await}
B. {#await userData}

Loading...


:then user

{user.name}


{/await}
C. {#await userData}

:catch error
Retry
{/await}
D. {#await userData}

:then user

{user.name}


:catch
Retry
{/await}

Solution

  1. Step 1: Verify loading, success, and error states

    {#await userData}

    :then user

    {user.name}


    :catch error
    Retry
    {/await} shows a spinner during loading, displays user name on success with :then user, and shows a retry button with error variable error in :catch.
  2. Step 2: Check other options for missing parts

    {#await userData}

    Loading...


    :then user

    {user.name}


    {/await} lacks error handling. {#await userData}

    :catch error
    Retry
    {/await} lacks success handling. {#await userData}

    :then user

    {user.name}


    :catch
    Retry
    {/await} misses error variable after :catch.
  3. Final Answer:

    {#await userData}

    :then user

    {user.name}


    :catch error
    Retry
    {/await}
    -> Option A
  4. Quick Check:

    All states with variables = {#await userData}

    :then user

    {user.name}


    :catch error
    Retry
    {/await} [OK]
Hint: Include loading, then, catch with variables [OK]
Common Mistakes:
  • Omitting :catch block or error variable
  • Missing :then block for success
  • Not showing loading state properly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard