chore: small tidy up (#16476)

pull/16478/head
Rich Harris 2 months ago committed by GitHub
parent 1deb31082a
commit 68372460e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -193,6 +193,8 @@ export class Batch {
// if we didn't start any new async work, and no async work // if we didn't start any new async work, and no async work
// is outstanding from a previous flush, commit // is outstanding from a previous flush, commit
if (this.#async_effects.length === 0 && this.#pending === 0) { if (this.#async_effects.length === 0 && this.#pending === 0) {
this.#commit();
var render_effects = this.#render_effects; var render_effects = this.#render_effects;
var effects = this.#effects; var effects = this.#effects;
@ -200,8 +202,6 @@ export class Batch {
this.#effects = []; this.#effects = [];
this.#block_effects = []; this.#block_effects = [];
this.#commit();
flush_queued_effects(render_effects); flush_queued_effects(render_effects);
flush_queued_effects(effects); flush_queued_effects(effects);
@ -539,43 +539,43 @@ function flush_queued_effects(effects) {
var length = effects.length; var length = effects.length;
if (length === 0) return; if (length === 0) return;
for (var i = 0; i < length; i++) { var i = 0;
var effect = effects[i];
if ((effect.f & (DESTROYED | INERT)) === 0) {
if (is_dirty(effect)) {
var wv = write_version;
update_effect(effect);
// Effects with no dependencies or teardown do not get added to the effect tree.
// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we
// don't know if we need to keep them until they are executed. Doing the check
// here (rather than in `update_effect`) allows us to skip the work for
// immediate effects.
if (effect.deps === null && effect.first === null && effect.nodes_start === null) {
// if there's no teardown or abort controller we completely unlink
// the effect from the graph
if (effect.teardown === null && effect.ac === null) {
// remove this effect from the graph
unlink_effect(effect);
} else {
// keep the effect in the graph, but free up some memory
effect.fn = null;
}
}
// if state is written in a user effect, abort and re-schedule, lest we run while (i < length) {
// effects that should be removed as a result of the state change var effect = effects[i++];
if (write_version > wv && (effect.f & USER_EFFECT) !== 0) {
break; if ((effect.f & (DESTROYED | INERT)) === 0 && is_dirty(effect)) {
var wv = write_version;
update_effect(effect);
// Effects with no dependencies or teardown do not get added to the effect tree.
// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we
// don't know if we need to keep them until they are executed. Doing the check
// here (rather than in `update_effect`) allows us to skip the work for
// immediate effects.
if (effect.deps === null && effect.first === null && effect.nodes_start === null) {
// if there's no teardown or abort controller we completely unlink
// the effect from the graph
if (effect.teardown === null && effect.ac === null) {
// remove this effect from the graph
unlink_effect(effect);
} else {
// keep the effect in the graph, but free up some memory
effect.fn = null;
} }
} }
// if state is written in a user effect, abort and re-schedule, lest we run
// effects that should be removed as a result of the state change
if (write_version > wv && (effect.f & USER_EFFECT) !== 0) {
break;
}
} }
} }
for (; i < length; i += 1) { while (i < length) {
schedule_effect(effects[i]); schedule_effect(effects[i++]);
} }
} }

Loading…
Cancel
Save