如何测量(或计算)两个js函数之间的间隔?

时间:2014-04-07 08:16:53

标签: function settimeout

我的朋友昨天问我一个特殊的javascript问题,我发现我无法解决它,因为没有人会写这样的代码:

function fun(){
  fun1();
}
function fun1(){
  setTimeout(fun(), 10000);
}
$(document).ready(function(){
  fun();
});

他的问题是:你能告诉我第一次执行fun1和第二次执行fun1之间有多少秒? 10秒? 我不认为他的代码会正确执行,我通过chrome dev-tools测试他​​的代码来检查我是对的.Chrome dev-tools打印一条消息:

Uncaught RangeError: Maximum call stack size exceeded

我也想知道第一次执行fun1和第二次执行fun1之间有多少秒,即使我永远不会写这样的代码。有没有人知道这个问题的答案?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

var tm = null;
var times = 0;

function fun()
{
    var d = new Date();
    times++;
    if (times == 2)
        alert((d.getTime() - tm) + " milliseconds");
    else
    {
        tm = d.getTime();
        setTimeout(function () { fun(); }, 10000);
    }
}

fun();

基本上你会在第二次调用函数时存储上次时间值并计算时差。

JSFiddle example