code: function bindRenderedEvent(zr, ecIns) {
      zr.on('rendered', function () {
  
          ecIns.trigger('rendered');
  
          // The `finished` event should not be triggered repeatly,
          // so it should only be triggered when rendering indeed happend
          // in zrender. (Consider the case that dipatchAction is keep
          // triggering when mouse move).
          if (
              // Although zr is dirty if initial animation is not finished
              // and this checking is called on frame, we also check
              // animation finished for robustness.
              zr.animation.isFinished()
              && !ecIns[OPTION_UPDATED]
              && !ecIns._scheduler.unfinished
              && !ecIns._pendingActions.length
          ) {
              ecIns.trigger('finished');
          }
      });
  }
docs: Event `rendered` is triggered when zr
  rendered. It is useful for realtime
  snapshot (reflect animation).
  
  Event `finished` is triggered when:
  (1) zrender rendering finished.
  (2) initial animation finished.
  (3) progressive rendering finished.
  (4) no pending action.
  (5) no delayed setOption needs to be processed.