Есть ли способ получить метку времени каждого вызова из стека вызовов? - PullRequest
0 голосов
/ 29 мая 2019

Я хотел бы использовать стек вызовов вызова функции, когда генерируется исключение, чтобы получить точную временную шкалу.Я знаю, что из стека вызовов я могу получить для каждого вызова его имя и имя вызывающего абонента + строка + файл.Но возможно ли узнать временную метку для каждой вызываемой функции?


    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 голосов
/ 29 мая 2019

Math.floor(Date.now() / 1000) для секунд с 1 января 1970 года. Или точный тип продолжительности времени (от начала до конца) 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))
}
...