run method

void run(
  1. JEffectNode e
)

Run an effect with the given flags

Implementation

void run(JEffectNode e) {
  final flags = e.flags;
  if (flags & 16 /** ReactiveFlags.dirty */ != 0 ||
      (flags & 32 /** ReactiveFlags.pending */ != 0 &&
          checkDirty(e.deps!, e))) {
    ++cycle;
    e.depsTail = null;
    e.flags = 6 /* ReactiveFlags.watching | ReactiveFlags.recursedCheck */;

    // only effect and watcher;
    final prevSub = setActiveSub(e);
    try {
      e.effectFn();
    } finally {
      activeSub = prevSub;
      e.flags &= ~4 /* ReactiveFlags.recursedCheck */;
      purgeDeps(e);
    }
  } else {
    e.flags = 2 /* ReactiveFlags.watching */;
  }
}