-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Closed
Description
Describe the bug
I noticed that assigning states with asynchronous expressions in variable destruction doesn't quite work.
Code:
<script>
let name = $state("tom");
let email = $state("tom@mail.com");
let number = $state(555);
const fetch_name = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve("jerry")
}, 100)
})
}
const fetch_email = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve("jerry@mail.com")
}, 100)
})
}
const fetch_number = () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(777)
}, 100)
})
}
const update = async () => {
// Code breaks here
({ name = await fetch_name(), email = await fetch_email(), number = await fetch_number() } = {});
}
</script>
<p>Name: {name}</p>
<p>Email: {email}</p>
<p>Number: {number}</p>
<button on:click={update}>Update me</button>
Error compiling component
Cannot use keyword 'await' outside an async function (19:53)
Possibly related: #9686
Reproduction
Logs
No response
System Info
REPL
Severity
annoyance
Metadata
Metadata
Assignees
Labels
No labels