Open
Description
Just want to capture a thought I had the other day: it might be neat to have inline await
expressions in templates. We already have {#await ...}
blocks but they're overkill in some situations — you have to declare a name for the resolved value, which you might only be using once, and you might not need to worry about error states depending on what you're doing.
Imagine something like this (v3 syntax):
<script>
async function fibonacci(n) {
return await fibonacciWorker.calculate(n);
}
</script>
<input type=number bind:value={n}>
<p>The {n}th Fibonacci number is {await fibonacci(n)}</p>
It would integrate with Suspense, so it'd be convenient for doing this sort of thing (where loadImage
resolves to its input, but only after ensuring that the image is loaded):
<script>
import loadImage from './utils.js';
</script>
{#each thumbnails as thumbnail}
<img alt={thumbnail.description} src="{await loadImage(thumbnail.src)}">
{/each}
Of course, you'd need some way to have placeholder content, for situations where you're not using Suspense. Maybe this?
<p>The {n}th Fibonacci number is {await fibonacci(n) or '...'}</p>