chore: simplify batch.flush (#17814)

another extraction from #17805. I always felt bad about
`this.process([])`, and this PR replaces it with the steps that actually
occur — even though this is arguably duplicative, I find it much easier
to understand.

It also allows us to avoid activating batches with no queued effects,
thanks to the change in #17809. This saves us a bit of work in a
not-that-uncommon case.

### Before submitting the PR, please make sure you do the following

- [x] It's really useful if your PR references an issue where it is
discussed ahead of time. In many cases, features are absent for a
reason. For large changes, please create an RFC:
https://github.com/sveltejs/rfcs
- [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`.
- [x] This message body should clearly illustrate what problems it
solves.
- [ ] Ideally, include a test that fails without this PR but passes with
it.
- [ ] If this PR changes code within `packages/svelte/src`, add a
changeset (`npx changeset`).

### Tests and linting

- [x] Run the tests with `pnpm test` and lint the project with `pnpm
lint`
pull/17815/head
Rich Harris 6 months ago committed by GitHub
parent 5e28508377
commit dd5b587bd3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -339,17 +339,16 @@ export class Batch {
}
flush() {
this.activate();
if (queued_root_effects.length > 0) {
this.activate();
flush_effects();
} else if (this.#pending === 0 && !this.is_fork) {
// append/remove branches
for (const fn of this.#commit_callbacks) fn(this);
this.#commit_callbacks.clear();
if (current_batch !== null && current_batch !== this) {
// this can happen if a new batch was created during `flush_effects()`
return;
}
} else if (this.#pending === 0) {
this.process([]); // TODO this feels awkward
this.#commit();
this.#deferred?.resolve();
}
this.deactivate();

Loading…
Cancel
Save