|
1 | 1 | /* 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 |
3 | 3 | import type { ComputedRefImpl as Computed } from './computed.js' |
4 | 4 | import type { ReactiveEffect as Effect } from './effect.js' |
5 | 5 |
|
@@ -33,8 +33,8 @@ export const enum SubscriberFlags { |
33 | 33 | } |
34 | 34 |
|
35 | 35 | let batchDepth = 0 |
36 | | -let queuedEffects: Effect | undefined |
37 | | -let queuedEffectsTail: Effect | undefined |
| 36 | + |
| 37 | +const queuedEffects: Effect[] = [] |
38 | 38 |
|
39 | 39 | export function startBatch(): void { |
40 | 40 | ++batchDepth |
@@ -107,12 +107,7 @@ export function propagate(link: Link): void { |
107 | 107 | continue |
108 | 108 | } |
109 | 109 | 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) |
116 | 111 | } |
117 | 112 | } else if (!(subFlags & (SubscriberFlags.Tracking | targetFlag))) { |
118 | 113 | sub.flags = subFlags | targetFlag |
@@ -210,18 +205,8 @@ export function processComputedUpdate( |
210 | 205 | } |
211 | 206 |
|
212 | 207 | 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() |
225 | 210 | } |
226 | 211 | } |
227 | 212 |
|
|
0 commit comments