private calculateFinalScore()

in src/performance/fmp.ts [88:124]


  private calculateFinalScore() {
    if (!this.flag) {
      return;
    }
    if (!MutationObserver) {
      return;
    }
    if (this.checkNeedCancel(START_TIME)) {
      // cancel observer for dom change
      this.observer.disconnect();
      this.flag = false;
      const res = this.getTreeScore(document.body);
      let tp: ICalScore = null;
      for (const item of res.dpss) {
        if (tp && tp.st) {
          if (tp.st < item.st) {
            tp = item;
          }
        } else {
          tp = item;
        }
      }
      // Get all of soures load time
      performance.getEntries().forEach((item: PerformanceResourceTiming) => {
        this.entries[item.name] = item.responseEnd;
      });
      if (!tp) {
        return false;
      }
      const resultEls: ElementList = this.filterResult(tp.els);
      this.fmpTime = this.getFmpTime(resultEls);
    } else {
      setTimeout(() => {
        this.calculateFinalScore();
      }, DELAY);
    }
  }