Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当javascript中挂起无限循环或浏览器时,有没有方法调用函数?_Javascript_Debugging - Fatal编程技术网

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

当javascript中挂起无限循环或浏览器时,有没有方法调用函数?,javascript,debugging,Javascript,Debugging,嗨,我在做一个有大量javascript代码的项目,有时候javascript代码会自动执行并挂起浏览器,并显示消息“kill this page”在chrome中,有任何方法可以跟踪错误。比如在无限循环到达时调用函数,或者浏览器挂起。请给我一些关于调试javascript代码plz的建议。无限循环可能是由许多不同的错误编程逻辑引起的,并且在任何情况下都没有可靠的逻辑可检测。所以我非常怀疑任何编程语言或IDE是否能提供可靠的无限循环检测 您看到的基本上是一个运行时检测,它基于在浏览器更新和刷新U

嗨,我在做一个有大量javascript代码的项目,有时候javascript代码会自动执行并挂起浏览器,并显示消息“kill this page”在chrome中,有任何方法可以跟踪错误。比如在无限循环到达时调用函数,或者浏览器挂起。请给我一些关于调试javascript代码plz的建议。

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

您看到的基本上是一个运行时检测,它基于在浏览器更新和刷新UI之前脚本执行所花的时间

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

因为JavaScript不是多线程的,因此为了避免后面的情况,你可以考虑把循环分解成小的工作单位,一旦一个单元完成,不要运行下一个单元,而是用一个小的时间延迟(比如250MS)调用下一个工作单元与SETTIMEOUT。这将使浏览器有机会呼吸和更新UI,并将您的脚本取消标记为“长期运行”脚本


您还可以使用日志记录,例如使用足够的值记录循环,以帮助您确定这些循环是否确实是无限循环。

在javascript中没有实现您所希望的方法


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

据我所知,这不是。也许有一种方法可以使用浏览器扩展。当javascript挂起浏览器时,它会占用大量内存,以至于浏览器检测到并杀死它。您将无法再运行任何javascript来检查它…您可能会对可疑的javascript方法使用timeout.thanx。。但是jeschafe r u说杀戮页面之所以显示是因为浏览器消耗了这么多内存。。。如果是的话,那么有什么方法可以检查内存的使用情况并清除内存中的定期间隔。它不需要太多内存,但现代浏览器正在使用机制来检测javascript问题,比如无限循环。据我所知,它们基于函数执行所需的时间。如果需要很长时间,浏览器会要求跳过脚本。请参阅下面的答案,了解如何避免这种情况。