假设我们有这个:
function myMethod1() {
...
}
以及稍后的代码:
myMethod1();
alert('myMethod1() was executed!');
我需要为警报设置超时,以便在myMethod1()执行后调用它。但是如何知道setTimeout函数的第二个参数的值?如何衡量myMethod1()执行所需的时间?
MyMethod1()有一个异步的ajax调用。
答案 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);
或者把它推到变量......