当我试图弄清楚为什么我的网页(dxview)的加载过程需要这么长时间时,我决定在(该过程的一部分)console.log()
之前和之后的代码中放置一些语句,并在eval()
其中的字符串中放置一些语句eval()
。它看起来有点像这样:
console.log("Timestamp before eval: " + (new Date().getTime()));
eval("... console.log('Some log in here'); ...");
console.log("Timestamp after eval: " + (new Date().getTime()));
有趣的是,结果与我预期的不同:
"Timestamp before eval: 1423852110738"
"Timestamp after eval: 1423852110787"
"Some log in here"
这使得很难检测到实际耗时的部分,因为以这种方式使用时间戳甚至不能表明eval
问题是否存在。
将日志放在 eval'ed 字符串的开头和结尾表明eval
实际需要250 到 350 毫秒来处理,而两个时间戳之间的差异仅为49 毫秒。但在viewShown
调用该方法之前,还需要23,000+ ms。
AFAIK,如果您不使用网络工作者或超时/间隔,JS 应该在语句完成之后(而不是之前)继续执行代码。我可能在这里混淆了一些东西,但是这怎么可能呢?
亲切的问候,
杰森