测量方法执行的时间

时间:2012-10-19 07:24:03

标签: javascript jquery

假设我们有这个:

function myMethod1() {
    ...
}

以及稍后的代码:

myMethod1();
alert('myMethod1() was executed!');

我需要为警报设置超时,以便在myMethod1()执行后调用它。但是如何知道setTimeout函数的第二个参数的值?如何衡量myMethod1()执行所需的时间?

MyMethod1()有一个异步的ajax调用。

3 个答案:

答案 0 :(得分:3)

如果您的方法执行异步任务,则通常会传递回调函数,如下所示:

function myMethod(cb)
{
    // some code, such as $.ajax
    $.ajax({
         url: 'example.com',
         complete: function() {
             // we're done, notify callback
             cb();
         }
    });
}

然后,cb在执行时传递出来:

myMethod(function() {
    alert('method is done');
});
alert('method returned, but is still doing stuff in the background');

这是异步设计的口头禅;在后台执行任务的每个方法都有一些通知回调函数完成的方法。


如果方法是同步的,你可以在函数体的末尾调用cb(),但保持你拥有的东西要容易得多:

myMethod();
alert('method is done');

答案 1 :(得分:1)

你不需要。按照您的设置方式,alert将始终在 myMethod1()完成后触发

答案 2 :(得分:0)

你可以使用时间戳,精确到毫秒。

你需要2个变量,一个用于保持开始时间,一个用于结束tume。 并设置那些你想要计算的var。所以

///下面的EDITED版本,使其全球化..

把它放在你的顶部js代码:

var ts_start;
var ts_stop;

把它放在你想要开始计算时间的地方:

ts_start =new Date().getTime(); 

把它放在你想要停止计算时间的地方:

ts_stop =new Date().getTime(); 

你可以通过让它们与它们相遇来提醒millesecond。

alert(ts_stop-ts_start);

或者把它推到变量......