Skip to content

Commit 085cdba

Browse files
committed
fix
1 parent c73de77 commit 085cdba

File tree

2 files changed

+9
-3
lines changed
  • packages/svelte

2 files changed

+9
-3
lines changed

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

+6-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { destroy_effect, render_effect } from './effects.js';
2727
import { inspect_effects, internal_set, set_inspect_effects, source } from './sources.js';
2828
import { get_stack } from '../dev/tracing.js';
2929
import { tracing_mode_flag } from '../../flags/index.js';
30-
import { suspend } from '../dom/blocks/boundary.js';
30+
import { exit, suspend } from '../dom/blocks/boundary.js';
3131

3232
/**
3333
* @template V
@@ -94,9 +94,12 @@ export function async_derived(fn) {
9494
render_effect(() => {
9595
const current = (promise = fn());
9696

97-
promise.then((v) => {
97+
suspend(promise).then((v) => {
9898
if (promise === current) {
99-
internal_set(value, v);
99+
internal_set(value, v.exit());
100+
101+
// TODO at the very least the naming is weird here
102+
exit();
100103
}
101104
});
102105

packages/svelte/tests/runtime-runes/samples/async-attribute/_config.js

+3
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@ export default test({
1919
async test({ assert, target, component }) {
2020
d.resolve('cool');
2121
await Promise.resolve();
22+
await Promise.resolve();
23+
await Promise.resolve();
2224
await tick();
2325
assert.htmlEqual(target.innerHTML, '<p class="cool">hello</p>');
2426

2527
d = deferred();
2628
component.promise = d.promise;
29+
await tick();
2730
assert.htmlEqual(target.innerHTML, '<p>pending</p>');
2831

2932
d.resolve('neat');

0 commit comments

Comments
 (0)