runEffect method

void runEffect(
  1. Effect effect
)

Executes an effect's function while properly tracking dependencies.

This method:

  1. Saves and updates the currently active subscriber
  2. Starts dependency tracking for the effect
  3. Runs the effect's function
  4. Restores the previous active subscriber
  5. Ends dependency tracking

effect The effect to run

Implementation

void runEffect(Effect effect) {
  final prevSub = activeSub;
  activeSub = effect;
  startTracking(effect);
  try {
    effect.fn();
  } finally {
    activeSub = prevSub;
    endTracking(effect);
  }
}