From e5579fd738640d567f333a5e6b4a50cf1fce2dcf Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 20 Apr 2025 17:04:19 -0400 Subject: [PATCH] WIP --- .../svelte/src/internal/client/reactivity/sources.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index d8b609859f..6340c6f0b4 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -262,9 +262,10 @@ export function update_pre(source, d = 1) { /** * @param {Value} signal * @param {number} status should be DIRTY or MAYBE_DIRTY + * @param {boolean} partial should skip async/block effects * @returns {void} */ -export function mark_reactions(signal, status) { +export function mark_reactions(signal, status, partial = false) { var reactions = signal.reactions; if (reactions === null) return; @@ -284,10 +285,14 @@ export function mark_reactions(signal, status) { continue; } + if (partial && (flags & (EFFECT_ASYNC | BLOCK_EFFECT)) !== 0) { + continue; + } + set_signal_status(reaction, status); if ((flags & DERIVED) !== 0) { - mark_reactions(/** @type {Derived} */ (reaction), MAYBE_DIRTY); + mark_reactions(/** @type {Derived} */ (reaction), MAYBE_DIRTY, partial); } else { schedule_effect(/** @type {Effect} */ (reaction)); }