使用Performance API测量异步函数性能时遇标记不存在错误
异步函数性能测量报错的解决办法
性能测量完全支持异步函数,这个错误跟异步无关,根源是标记名称没加字符串包裹。
performance.mark()和performance.measure()要求传入的标记名称是字符串类型,你直接写button_render_start会被当作未定义变量,浏览器找不到对应的标记,才会抛出错误。
修正后的代码如下:
export const renderButton: RenderButtonAPIExternalFunction = function(): void | ButtonObject { performance.mark('button_render_start'); buttonUIRender(); } export async function buttonUIRender() { await buttonUIRenderer.renderButton(); performance.mark('button_render_finish'); performance.measure( 'button_render_measure', 'button_render_start', 'button_render_finish' ); }
异步场景下测量性能的逻辑没问题:只要起始标记在异步操作前创建,结束标记在异步操作完成后创建,且两者的字符串名称完全一致,就能正常完成性能测量。之后可以通过performance.getEntriesByName('button_render_measure')获取具体的延迟数据。
内容的提问来源于stack exchange,提问作者shailesh
相关产品推荐
相关产品推荐

