我正在做一个旧的AngularJS项目。代码太复杂/太大,无法在此处显示。但是我注意到,即使摘要页面上什么都没有发生,摘要更改被每秒永远重复调用数百次时调用的函数。我从向日志中写入内容知道这一点。例如,如果我包含这样的函数:
$rootScope.$watch(function (e) {
console.log('digest changed' );
});
并查看控制台日志,“摘要已更改”将被无休止地写入数千次。我知道连续触发这样的摘要循环并不是很好。有什么办法让我弄清楚是什么原因造成的? 预先感谢!
答案 0 :(得分:0)
我无法直接找出问题的答案。但是我能够使用强力方法解决问题,方法是反复删除内容直到问题消失,然后将其范围缩小到导致问题的原因。就我而言,这是由名为infinite-scroll的库引起的。
答案 1 :(得分:0)
脏检查是由几个触发器启动的:
$digest()
或$apply()
直接调用$scope
或$rootScope
$timeout
或$https
(实际上在内部使用#1)通常,我将从#1开始,尝试在您自己的代码中为每个$digest()
/ $apply()
设置断点(或logpoints)。
如果它不起作用,我将在log的digest()
函数内添加日志点-通过这种方法,很容易像您的情况一样捕获无限调用队列。