打字稿方法的性能指标

问题描述 投票:0回答:0

我有一个用打字稿编写的框架。这些方法有很多依赖于浏览器打开并执行某些操作的方法。我想捕获每个人的延迟指标。到目前为止我想到了以下2种方法-

方法-1:

export const startSession = async function (): Promise<void> {
    const startTime = Date.now()
    //Method performs some actions.
    const endTime = Date.now()

    const executionTimeMs = endTime - startTime
    const performanceLog: performanceMetrics = {
        apiName: "startSession",
        executionTime: executionTimeMs
    }
    publishMetrics(performanceLog)
}

如果我们选择此方法,我们将必须使用这些调用更新所有方法。另一种方法看起来像这样 -

方法2

export const startSession = withPermanceLogging(async function (): Promise<void> {
    //Method performs some actions.
})
function withPermanceLogging<F extends (...args: any) => any>(fn: F): F {
    return (async (...args: Parameters<F>) => {
        const startTime = Date.now() 
        const ret = await fn(...args as any)

        const endTime = Date.now()
        const executionTimeMs = endTime - startTime
        const performanceLog: performanceMetrics = {
            apiName: fn.name,
            executionTime: executionTimeMs
        }
        publishMetrics(performanceLog) 

        return ret
    }) as F
}

此方法在回调/.then的情况下不起作用

还有其他选项可用于捕获方法的指标吗?

typescript metrics
© www.soinside.com 2019 - 2024. All rights reserved.