mirror of https://github.com/sveltejs/svelte
parent
8334abd626
commit
7deedc5bb4
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'svelte': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix: render `:catch` of `#await` block with correct key
|
||||||
@ -0,0 +1,61 @@
|
|||||||
|
import { test } from '../../test';
|
||||||
|
import { tick } from 'svelte';
|
||||||
|
|
||||||
|
export default test({
|
||||||
|
async test({ assert, target }) {
|
||||||
|
const [resolveImmediate, resolveTimeout, rejectImmediate, rejectTimeout] =
|
||||||
|
target.querySelectorAll('button');
|
||||||
|
|
||||||
|
rejectTimeout.click();
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 1));
|
||||||
|
assert.htmlEqual(
|
||||||
|
target.innerHTML,
|
||||||
|
`
|
||||||
|
<button>Resolve (immediate)</button>
|
||||||
|
<button>Resolve (timeout)</button>
|
||||||
|
<button>Reject (immediate)</button>
|
||||||
|
<button>Reject (timeout)</button>
|
||||||
|
<p> err [Yeah] </p>
|
||||||
|
`
|
||||||
|
);
|
||||||
|
|
||||||
|
resolveImmediate.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(
|
||||||
|
target.innerHTML,
|
||||||
|
`
|
||||||
|
<button>Resolve (immediate)</button>
|
||||||
|
<button>Resolve (timeout)</button>
|
||||||
|
<button>Reject (immediate)</button>
|
||||||
|
<button>Reject (timeout)</button>
|
||||||
|
<p> resolved [?] </p>
|
||||||
|
`
|
||||||
|
);
|
||||||
|
|
||||||
|
resolveTimeout.click();
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 1));
|
||||||
|
assert.htmlEqual(
|
||||||
|
target.innerHTML,
|
||||||
|
`
|
||||||
|
<button>Resolve (immediate)</button>
|
||||||
|
<button>Resolve (timeout)</button>
|
||||||
|
<button>Reject (immediate)</button>
|
||||||
|
<button>Reject (timeout)</button>
|
||||||
|
<p> resolved [OK] </p>
|
||||||
|
`
|
||||||
|
);
|
||||||
|
|
||||||
|
rejectImmediate.click();
|
||||||
|
await tick();
|
||||||
|
assert.htmlEqual(
|
||||||
|
target.innerHTML,
|
||||||
|
`
|
||||||
|
<button>Resolve (immediate)</button>
|
||||||
|
<button>Resolve (timeout)</button>
|
||||||
|
<button>Reject (immediate)</button>
|
||||||
|
<button>Reject (timeout)</button>
|
||||||
|
<p> err [??] </p>
|
||||||
|
`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
<script>
|
||||||
|
let p = $state(null);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<button onclick={()=>{
|
||||||
|
p = new Promise((resolve, reject) => {
|
||||||
|
resolve("?");
|
||||||
|
});
|
||||||
|
}}>Resolve (immediate)</button>
|
||||||
|
<button onclick={()=>{
|
||||||
|
p = new Promise((resolve, reject) => {
|
||||||
|
setTimeout(() => resolve("OK"), 1);
|
||||||
|
});
|
||||||
|
}}>Resolve (timeout)</button>
|
||||||
|
<button onclick={()=>{
|
||||||
|
p = new Promise((resolve, reject) => {
|
||||||
|
reject("??");
|
||||||
|
});
|
||||||
|
}}>Reject (immediate)</button>
|
||||||
|
<button onclick={()=>{
|
||||||
|
p = new Promise((resolve, reject) => {
|
||||||
|
setTimeout(() => reject("Yeah"), 1);
|
||||||
|
});
|
||||||
|
}}>Reject (timeout)</button>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{#await p}
|
||||||
|
...
|
||||||
|
{:then v}
|
||||||
|
resolved [{v}]
|
||||||
|
{:catch err}
|
||||||
|
err [{err}]
|
||||||
|
{/await}
|
||||||
|
</p>
|
||||||
Loading…
Reference in new issue