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);
}
}