Skip to content

Commit b446de8

Browse files
committed
Update index.ts
1 parent e6857cd commit b446de8

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/index.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ let notifyIndex = 0;
2222
let queuedLength = 0;
2323
let activeSub: ReactiveNode | undefined;
2424

25-
const queued: (Effect | EffectScope | undefined)[] = [];
25+
const queued: (Effect | undefined)[] = [];
2626
const {
2727
link,
2828
unlink,
@@ -37,16 +37,16 @@ const {
3737
return updateSignal(node as Signal);
3838
}
3939
},
40-
notify(effect: Effect | EffectScope) {
40+
notify(effect: Effect) {
4141
let flags = effect.flags;
4242
let insertIndex = queuedLength;
4343
let firstInsertedIndex = insertIndex;
4444

4545
do {
46-
effect.flags = flags & ~(2 satisfies ReactiveFlags.Watching) | 64 /* Queued */;
46+
effect.flags = flags & ~(2 satisfies ReactiveFlags.Watching);
4747
queued[insertIndex++] = effect;
48-
effect = effect.subs?.sub as Effect | EffectScope;
49-
if (effect === undefined || (flags = effect.flags) & 64 /* Queued */) {
48+
effect = effect.subs?.sub as Effect;
49+
if (effect === undefined || !((flags = effect.flags) & 2 satisfies ReactiveFlags.Watching)) {
5050
break;
5151
}
5252
} while (true);
@@ -204,15 +204,13 @@ function updateSignal(s: Signal): boolean {
204204
return s.currentValue !== (s.currentValue = s.pendingValue);
205205
}
206206

207-
function run(e: Effect | EffectScope, flags: ReactiveFlags): void {
207+
function run(e: Effect): void {
208+
let flags = e.flags;
208209
if (
209210
flags & 16 satisfies ReactiveFlags.Dirty
210211
|| (
211212
flags & 32 satisfies ReactiveFlags.Pending
212-
&& (
213-
checkDirty(e.deps!, e)
214-
|| (e.flags = flags & ~(32 satisfies ReactiveFlags.Pending), false)
215-
)
213+
&& checkDirty(e.deps!, e)
216214
)
217215
) {
218216
++cycle;
@@ -226,14 +224,16 @@ function run(e: Effect | EffectScope, flags: ReactiveFlags): void {
226224
e.flags &= ~(4 satisfies ReactiveFlags.RecursedCheck);
227225
purgeDeps(e);
228226
}
227+
} else {
228+
e.flags = 2 satisfies ReactiveFlags.Watching;
229229
}
230230
}
231231

232232
function flush(): void {
233233
while (notifyIndex < queuedLength) {
234234
const effect = queued[notifyIndex]!;
235235
queued[notifyIndex++] = undefined;
236-
run(effect, effect.flags &= ~(64 /* Queued */));
236+
run(effect);
237237
}
238238
notifyIndex = 0;
239239
queuedLength = 0;

0 commit comments

Comments
 (0)