Challenge - 5 Problems
Streaming with Promises Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate2:00remaining
What will this Svelte component render initially?
Consider this Svelte component that uses a promise to fetch data and streams the result. What will the user see on the page before the promise resolves?
Svelte
<script> let dataPromise = new Promise((resolve) => { setTimeout(() => resolve('Hello from promise!'), 2000); }); </script> <p>{#await dataPromise} Loading... {:then data} {data} {/await}</p>
Attempts:
2 left
💡 Hint
Think about what the #await block shows before the promise finishes.
✗ Incorrect
The #await block shows the content inside it before the promise resolves. So initially, it shows "Loading..." until the promise finishes.
❓ state_output
intermediate2:00remaining
What is the final displayed text after promise resolves?
This Svelte component streams a promise that resolves after 1 second. What text will be shown after the promise resolves?
Svelte
<script> let promise = new Promise((res) => setTimeout(() => res('Data loaded'), 1000)); </script> {#await promise} <p>Waiting...</p> {:then result} <p>{result}</p> {/await}
Attempts:
2 left
💡 Hint
What does the {:then} block do?
✗ Incorrect
After the promise resolves, the {:then} block runs and displays the resolved value inside a paragraph.
📝 Syntax
advanced2:00remaining
Which option correctly streams a promise in Svelte?
You want to show a loading message while waiting for a promise and then show the data once it resolves. Which code snippet correctly uses Svelte's #await block?
Attempts:
2 left
💡 Hint
Remember to call the function returning the promise and use the correct syntax for then block.
✗ Incorrect
Option D correctly calls the function and uses {:then data} to capture the resolved value. Option D misses parentheses, C misses {:then} block, and D misses the variable name after then.
🔧 Debug
advanced2:00remaining
Why does this Svelte component throw an error?
This component tries to stream a promise but throws an error. What is the cause?
Svelte
<script> let promise = fetch('/api/data').then(res => res.json()); </script> {#await promise} <p>Loading...</p> {:then data} <p>{data.message}</p> {/await}
Attempts:
2 left
💡 Hint
Check what the API returns and if the property accessed exists.
✗ Incorrect
The error happens because data.message is accessed but the API response does not contain a 'message' property, causing a runtime error.
🧠 Conceptual
expert2:00remaining
What happens if a promise inside a Svelte #await block rejects without a catch?
Consider a Svelte component using a promise inside an #await block. The promise rejects but there is no {:catch} block. What will the user see?
Svelte
<script> let promise = new Promise((_, reject) => setTimeout(() => reject('Failed'), 1000)); </script> {#await promise} <p>Loading...</p> {:then data} <p>{data}</p> {/await}
Attempts:
2 left
💡 Hint
Think about how Svelte handles promise rejections without a catch block.
✗ Incorrect
If a promise rejects and there is no {:catch} block, Svelte throws an error and the component crashes, showing an error in the console.