aaa
Rich Harris 8 months ago
parent d98d6be8d6
commit 6b314bd202

@ -45,7 +45,7 @@ import { DEV } from 'esm-env';
import { define_property } from '../../shared/utils.js'; import { define_property } from '../../shared/utils.js';
import { get_next_sibling } from '../dom/operations.js'; import { get_next_sibling } from '../dom/operations.js';
import { async_derived, derived, destroy_derived } from './deriveds.js'; import { async_derived, derived, destroy_derived } from './deriveds.js';
import { save } from '../dom/blocks/boundary.js'; import { capture, suspend } from '../dom/blocks/boundary.js';
/** /**
* @param {'$effect' | '$effect.pre' | '$inspect'} rune * @param {'$effect' | '$effect.pre' | '$inspect'} rune
@ -353,12 +353,19 @@ export function template_effect(fn, sync = [], async = [], d = derived) {
let effect = /** @type {Effect} */ (active_effect); let effect = /** @type {Effect} */ (active_effect);
if (async.length > 0) { if (async.length > 0) {
save(Promise.all(async.map(async_derived))).then((result) => { var restore = capture();
var unsuspend = suspend();
Promise.all(async.map(async_derived)).then((result) => {
restore();
if ((effect.f & DESTROYED) !== 0) { if ((effect.f & DESTROYED) !== 0) {
return; return;
} }
create_template_effect(fn, [...sync.map(d), ...result.restore()]); create_template_effect(fn, [...sync.map(d), ...result]);
unsuspend();
}); });
} else { } else {
create_template_effect(fn, sync.map(d)); create_template_effect(fn, sync.map(d));

Loading…
Cancel
Save