Skip to content

Commit 734f56c

Browse files
committed
fix
1 parent b805245 commit 734f56c

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ export function RegularElement(node, context) {
309309
attribute.value,
310310
context,
311311
(value, metadata) =>
312-
metadata.has_call
312+
metadata.has_call || metadata.has_await
313313
? get_expression_id(
314314
metadata.has_await ? context.state.async_expressions : context.state.expressions,
315315
value

packages/svelte/src/internal/client/reactivity/deriveds.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export function async_derived(fn, location) {
119119

120120
render_effect(() => {
121121
if (DEV) from_async_derived = active_effect;
122-
promise = fn();
122+
promise = Promise.resolve(fn());
123123
if (DEV) from_async_derived = null;
124124

125125
var restore = capture();
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { flushSync, tick } from 'svelte';
2+
import { test } from '../../test';
3+
4+
export default test({
5+
html: `
6+
<p>pending</p>
7+
`,
8+
9+
async test({ assert, target }) {
10+
await Promise.resolve();
11+
await Promise.resolve();
12+
await Promise.resolve();
13+
await Promise.resolve();
14+
flushSync();
15+
16+
assert.htmlEqual(target.innerHTML, '<p data-foo="bar">hello</p>');
17+
}
18+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<svelte:boundary>
2+
<p data-foo={await 'bar'}>hello</p>
3+
4+
{#snippet pending()}
5+
<p>pending</p>
6+
{/snippet}
7+
</svelte:boundary>

0 commit comments

Comments
 (0)