Skip to content

Commit 41fb779

Browse files
committed
tune
1 parent bb2f25c commit 41fb779

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

packages/svelte/src/internal/client/runtime.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -313,31 +313,28 @@ export function update_reaction(reaction) {
313313
var result = /** @type {Function} */ (0, reaction.fn)();
314314
var deps = reaction.deps;
315315

316-
// Avoid doing work on an effect/derived that might have become destroyed
317-
if ((flags & DESTROYED) === 0) {
318-
if (new_deps !== null) {
319-
var i;
316+
if (new_deps !== null) {
317+
var i;
320318

321-
remove_reactions(reaction, skipped_deps);
319+
remove_reactions(reaction, skipped_deps);
322320

323-
if (deps !== null && skipped_deps > 0) {
324-
deps.length = skipped_deps + new_deps.length;
325-
for (i = 0; i < new_deps.length; i++) {
326-
deps[skipped_deps + i] = new_deps[i];
327-
}
328-
} else {
329-
reaction.deps = deps = new_deps;
321+
if (deps !== null && skipped_deps > 0) {
322+
deps.length = skipped_deps + new_deps.length;
323+
for (i = 0; i < new_deps.length; i++) {
324+
deps[skipped_deps + i] = new_deps[i];
330325
}
326+
} else {
327+
reaction.deps = deps = new_deps;
328+
}
331329

332-
if (!skip_reaction) {
333-
for (i = skipped_deps; i < deps.length; i++) {
334-
(deps[i].reactions ??= []).push(reaction);
335-
}
330+
if (!skip_reaction) {
331+
for (i = skipped_deps; i < deps.length; i++) {
332+
(deps[i].reactions ??= []).push(reaction);
336333
}
337-
} else if (deps !== null && skipped_deps < deps.length) {
338-
remove_reactions(reaction, skipped_deps);
339-
deps.length = skipped_deps;
340334
}
335+
} else if (deps !== null && skipped_deps < deps.length) {
336+
remove_reactions(reaction, skipped_deps);
337+
deps.length = skipped_deps;
341338
}
342339

343340
return result;
@@ -748,7 +745,10 @@ export function get(signal) {
748745
// If the derived is destroyed, just execute it again without retaining
749746
// it's memoisation properties – as the derived is stale
750747
if (is_derived && (flags & DESTROYED) !== 0) {
751-
return execute_derived(/** @type {Derived} */ (signal));
748+
var value = execute_derived(/** @type {Derived} */ (signal));
749+
// Ensure the derived remains destroyed
750+
destroy_derived(/** @type {Derived} */ (signal));
751+
return value;
752752
}
753753

754754
if (is_signals_recorded) {

0 commit comments

Comments
 (0)