runEffect function
Run an effect with the given flags
Implementation
@pragma('vm:prefer-inline')
@pragma('wasm:prefer-inline')
@pragma('dart2js:prefer-inline')
void runEffect(EffectBase e) {
final flags = e.flags;
if (flags & (ReactiveFlags.dirty) != 0 ||
(flags & (ReactiveFlags.pending) != 0 && checkDirty(e.deps!, e))) {
++cycle;
e.depsTail = null;
e.flags = (ReactiveFlags.watching | ReactiveFlags.recursedCheck);
// only effect and watcher;
final prevSub = setActiveSub(e);
try {
e.effectFn();
} finally {
activeSub = prevSub;
e.flags &= ~(ReactiveFlags.recursedCheck);
purgeDeps(e);
}
} else {
e.flags = (ReactiveFlags.watching);
}
}