当无限循环或浏览器在javascript中挂起时,有没有办法调用函数?

时间:2012-07-17 05:56:26

标签: javascript debugging

你好我正在开发一个拥有巨大javascript代码的项目,有时javascript代码会自动执行并挂起浏览器,并在chrome中使用“kill this page”消息有任何方法来跟踪错误。就像在无限循环到达时调用函数调用或者浏览器就像那样挂起。请给我一些关于调试javascript代码的建议。

2 个答案:

答案 0 :(得分:1)

没有办法在javascript中做你想做的事情。

但是,您可以使用DynaTrace Ajax Edition之类的工具来跟踪浏览器中的cpu使用情况,以确定正在发生的事情。

答案 1 :(得分:0)

无限循环可能在许多不同的错误编程逻辑中引起,并且在每种情况下都没有可靠的逻辑来检测。所以我非常怀疑任何编程语言或IDE是否会提供任何可靠的无限循环检测。

您所看到的基本上是基于脚本执行在浏览器更新和刷新UI之前花了多长时间的运行时检测。

有时这种长时间运行的JavaScript可能是由无限循环引起的,但很多时候它们只是大循环或循环,执行太多工作而导致UI无响应。

因为JavaScript不是多线程的,所以为了避免上面的后一种情况,你可以考虑将循环分成小的工作单元,一旦一个单元完成,不运行下一个单元,而是调用下一个单元具有小时间延迟(例如250ms)的setTimeout的工作单元。这将使浏览器有机会屏蔽和更新UI,并将您的脚本取消标记为“长时间运行”脚本。

您也可以使用Firebug Logging之类的日志记录来记录具有足够值的循环,以帮助您确定这些循环是否确实是无限循环。