Javascript 在AngularJS中,有没有一种方法可以告诉我们是什么触发了消化循环?
我正在从事一个遗留AngularJS项目。代码太复杂/太大,无法在此显示。但我注意到,当摘要更改时调用的函数每秒被重复调用数百次,即使页面上根本没有发生任何变化。我在日志上写了些东西就知道了。例如,如果我包含如下函数:Javascript 在AngularJS中,有没有一种方法可以告诉我们是什么触发了消化循环?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我正在从事一个遗留AngularJS项目。代码太复杂/太大,无法在此显示。但我注意到,当摘要更改时调用的函数每秒被重复调用数百次,即使页面上根本没有发生任何变化。我在日志上写了些东西就知道了。例如,如果我包含如下函数: $rootScope.$watch(function (e) { console.log('digest changed' ); }); 看看控制台日志,“摘要更改”将被无休止地写入数千次。我知道这样持续地触发消化循环是不好的。有没有办法让我找出是什么原因造成的? 提前谢
$rootScope.$watch(function (e) {
console.log('digest changed' );
});
看看控制台日志,“摘要更改”将被无休止地写入数千次。我知道这样持续地触发消化循环是不好的。有没有办法让我找出是什么原因造成的?
提前谢谢 我无法直接找到问题的答案。但是我用蛮力方法解决了这个问题,反复删除东西,直到问题消失,然后缩小范围,找出问题的原因。在我的例子中,它是由一个名为“无限滚动”的库引起的。脏检查由几个触发器启动:
$scope
或$rootScope
直接调用$digest()
或$apply()
$timeout
或$https
(实际上在引擎盖下使用#1)$digest()
/$apply()
设置断点(或)
如果它不起作用,我会在angular的
digest()
函数中添加logpoint-通过这种方法,可以很容易地捕捉到无限的调用队列,就像您的情况一样。我投票结束这个问题,因为用户自己调试了这个问题,并且提供的答案不太可能帮助任何其他用户。