performance.ts 655 Bytes
/**
 * 获取页面 dom 数量
 * @returns
 */
export const getTotalDOMNumber = () => document.querySelectorAll('*').length

export type PerformanceLongTaskEntry = {
  type: 'longTask'
  eventType: string
  startTime: number
  duration: number
}

/**
 * 监控长任务事件响应时间:耗费了 50 毫秒或更多时间
 */
export const startObservingLongTasks = (callback: any) => {
  const observer = new PerformanceObserver((entryList) => {
    const entries = entryList.getEntries()
    entries.forEach((entry) => {
      requestIdleCallback(() => {
        callback(entry)
      })
    })
  })
  observer.observe({ entryTypes: ['longtask'] })
}