如何监测js长任务
具体实现 PerformanceLongTaskTiming 长任务的方法是通过 PerformanceObserver API 监听长任务事件,并在事件回调函数中进行相应处理。
记录长任务的相关信息:
记录长任务的相关信息可以提供更详细的信息,以便后续进一步分析和优化性能。可以记录长任务的名称、开始时间、持续时间、堆栈跟踪等信息。
1 | const observer = new PerformanceObserver((list) => { |
很遗憾的是,我在自己做测试demo时,以上的API中,
entry.attribution[0].stackTrace
属性一直是空的,所以无法获取到长任务的堆栈跟踪信息。目前只能通过window.onerror
来获取堆栈跟踪信息。
上报异常:
长任务可能会导致页面卡顿或崩溃,需要及时上报异常信息以便快速发现和解决问题。上报异常可以使用 window.onerror 或其他异常监控工具。
1 | window.onerror = function (msg, url, lineNo, columnNo, error) { |
提醒用户:
当长任务发生时,可以向用户显示相应的提示信息,提醒用户页面出现卡顿,可以进行等待或刷新页面等操作。可以使用 toast
提示,当然 toast
并不是一个原生的提示工具,还需要自己另行实现。
1 | if (entry.name === 'self' && entry.duration > 50) { |
结合以上实现,可以更全面地监测和处理页面的长任务,提升用户体验和系统性能。