|
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