有没有办法从调用堆栈中获取每个调用的时间戳?

时间:2019-05-29 08:47:00

标签: javascript stack-trace callstack

当抛出异常以获取准确的时间限制时,我想使用函数调用的调用堆栈。 我知道,从调用堆栈中,我可以为每个调用获取其名称以及其调用者名称+线路+文件。但是是否可以知道每个调用函数的时间戳?


    function callA() {
        callB();
    }

    function callB() {
        callC();
    }

    function callC() {
        throw new Error('Boom');
    }

Chrome控制台打印的内容是:

Uncaught Error: Boom
    at callC (<anonymous>:13:8)
    at callB (<anonymous>:8:2)
    at callA (<anonymous>:3:2)
    at <anonymous>:1:1

我想在我的js代码中使用的东西就像:

Uncaught Error: Boom
    at callC (<anonymous>:13:8) timestamp : 1559117311448 
    at callB (<anonymous>:8:2) timestamp : 1559117311449
    at callA (<anonymous>:3:2) timestamp : 1559117311449
    at <anonymous>:1:1

1 个答案:

答案 0 :(得分:0)

Math.floor(Date.now() / 1000)表示从1970年1月1日开始的秒数。或精确的持续时间类型(从开始到结束)performance.now()

function callA() {
  console.log(performance.now());
  callB();
  console.log(performance.now());
}

function callB() {
  let t0 = performance.now();
  callC();
  let t1 = performance.now();
  console.log(`Start: ${t0} End: ${t1}`);
}

function callC() {
  throw new Error('Boom');
  console.log(Math.floor(Date.now() / 1000))
}