0

我目前正在使用包含某些交互时间的消息记录 AJAX 应用程序。所以我有几个地方的代码遵循这样的模式:

var startTime = new Date();
this.doFunction();
var endTime = new Date();
logger.log("doFunction took " + (endTime - startTime) + " milliseconds.");

我要做的是将时间分离到一个库函数中,该函数将函数作为参数,看起来像:

time : function(toTime) {
    var startTime = new Date();
    eval(toTime);
    var endTime = new Date();
    logger.log(toTime + " took " + (endTime - startTime) + " milliseconds.");
} 

(语法可能不对,我对 JavaScript 不太熟悉)

这样一来,我就不会做时间安排了:

time(this.doFunction);

我的问题是,不同的浏览器是否有不同的行为eval()?例如将 eval 触发到一个新线程中,从而使我的时间不正确?

任何其他有关时间的建议将不胜感激。

4

2 回答 2

1

不,所有浏览器在 javascript 引擎中都是单线程的。我怀疑你也可以简单地通过调用 toTime() 作为函数而不是使用 eval() 来解决这个问题。您可能需要查看 javascript参数对象和 javascript“调用”和“应用”方法,以透明地将传递给外部“时间”函数的参数转发到内部“toTime”函数。

于 2009-01-20T12:48:00.987 回答
0

eval 应该是同步的。

你不应该使用eval()but toTime.call(),因为你应该避免使用 eval。

于 2009-01-20T12:49:47.957 回答