lib/helper/watcher.js
function(){
    if(this.$phase === 'digest' || this._mute) return;
    this.$phase = 'digest';
    var dirty = false, n =0;
    while(dirty = this._digest()){

      if((++n) > 20){ // max loop
        throw Error('there may a circular dependencies reaches')
      }
    }
    // stable watch is dirty
    var stableDirty =  this._digest(true);

    if( (n > 0 || stableDirty) && this.$emit) {
      this.$emit("$update");
      if (this.devtools) {
        this.devtools.emit("flush", this)
      }
    }
    this.$phase = null;
  }
function(){
    if(this.$phase === 'digest' || this._mute) return;
    this.$phase = 'digest';
    var dirty = false, n =0;
    while(dirty = this._digest()){

      if((++n) > 20){ // max loop
        throw Error('there may a circular dependencies reaches')
      }
    }
    // stable watch is dirty
    var stableDirty =  this._digest(true);

    if( (n > 0 || stableDirty) && this.$emit) {
      this.$emit("$update");
      if (this.devtools) {
        this.devtools.emit("flush", this)
      }
    }
    this.$phase = null;
  }
function ( ) { if ( this . $phase === 'digest' || this . _mute ) return ; this . $phase = 'digest' ; var dirty = false , n = 0 ; while ( dirty = this . _digest ( ) ) { if ( ( ++ n ) > 20 ) { // max loop throw Error ( 'there may a circular dependencies reaches' ) } } // stable watch is dirty var stableDirty = this . _digest ( true ) ; if ( ( n > 0 || stableDirty ) && this . $emit ) { this . $emit ( "$update" ) ; if ( this . devtools ) { this . devtools . emit ( "flush" , this ) } } this . $phase = null ; }
the whole digest loop ,just like angular, it just a dirty-check loop;
@param  {String} path  now regular process a pure dirty-check loop, but in parse phase,
Regular's parser extract the dependencies, in future maybe it will change to dirty-check combine with path-aware update;
@return {Void}
the whole digest loop just like angular it just a dirty - check loop ;