run function
Executes an effect node if it needs updating.
Checks if the effect is dirty or has pending updates, and if so, runs its function with dependency tracking. Otherwise, just marks it as watching.
This is called internally when flushing queued effects.
Implementation
void run(EffectNode e) {
final flags = e.flags;
if ((flags & ReactiveFlags.dirty) != ReactiveFlags.none ||
((flags & ReactiveFlags.pending) != ReactiveFlags.none &&
checkDirty(e.deps!, e))) {
++cycle;
e.depsTail = null;
e.flags = 6 /*ReactiveFlags.watching | ReactiveFlags.recursedCheck*/
as ReactiveFlags;
final prevSub = setActiveSub(e);
try {
e.fn();
} finally {
activeSub = prevSub;
e.flags &= -5 /*~ReactiveFlags.recursedCheck*/;
purgeDeps(e);
}
} else {
e.flags = ReactiveFlags.watching;
}
}