Skip to content

Commit c9a2799

Browse files
committed
fix(reactivity): dont using a chain table to queuing effects
1 parent 6f85cba commit c9a2799

File tree

1 file changed

+6
-21
lines changed

1 file changed

+6
-21
lines changed

packages/reactivity/src/system.ts

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable */
2-
// Ported from https://github.com/stackblitz/alien-signals/blob/v1.0.4/src/system.ts
2+
// Ported from https://github.com/stackblitz/alien-signals/blob/v1.0.5/src/system.ts
33
import type { ComputedRefImpl as Computed } from './computed.js'
44
import type { ReactiveEffect as Effect } from './effect.js'
55

@@ -33,8 +33,8 @@ export const enum SubscriberFlags {
3333
}
3434

3535
let batchDepth = 0
36-
let queuedEffects: Effect | undefined
37-
let queuedEffectsTail: Effect | undefined
36+
37+
const queuedEffects: Effect[] = []
3838

3939
export function startBatch(): void {
4040
++batchDepth
@@ -107,12 +107,7 @@ export function propagate(link: Link): void {
107107
continue
108108
}
109109
if (subFlags & SubscriberFlags.Effect) {
110-
if (queuedEffectsTail !== undefined) {
111-
queuedEffectsTail.depsTail!.nextDep = sub.deps
112-
} else {
113-
queuedEffects = sub as Effect
114-
}
115-
queuedEffectsTail = sub as Effect
110+
queuedEffects.push(sub as Effect)
116111
}
117112
} else if (!(subFlags & (SubscriberFlags.Tracking | targetFlag))) {
118113
sub.flags = subFlags | targetFlag
@@ -210,18 +205,8 @@ export function processComputedUpdate(
210205
}
211206

212207
export function processEffectNotifications(): void {
213-
while (queuedEffects !== undefined) {
214-
const effect = queuedEffects
215-
const depsTail = effect.depsTail!
216-
const queuedNext = depsTail.nextDep
217-
if (queuedNext !== undefined) {
218-
depsTail.nextDep = undefined
219-
queuedEffects = queuedNext.sub as Effect
220-
} else {
221-
queuedEffects = undefined
222-
queuedEffectsTail = undefined
223-
}
224-
effect.notify()
208+
while (queuedEffects.length) {
209+
queuedEffects.shift()!.notify()
225210
}
226211
}
227212

0 commit comments

Comments
 (0)