情景:
在ng_click
上,我在其AngularController中调用一个函数,该函数在其内部调用AnguarService中的函数,这是在进行Webservice调用并获取大小为2MB的Json对象。此响应用于使用 dir-paginate 绑定视图上的数据,如下所示
dir-paginate="item in results | orderObjectBy: predicate : reverse | filter : myFilter | itemsPerPage: pageSize track by $index"
当控件试图退出AngularController中的函数时,下面是调用堆栈,$ digest需要14秒才能完成执行。
致电堆栈:
(anonymous) (MyAppcontroller.js?v=v1.0.0.0:479)
(anonymous) (angular.min.js?v=v1.0.0.0:131)
$eval (angular.min.js?v=v1.0.0.0:145)
$digest (angular.min.js?v=v1.0.0.0:142)
$apply (angular.min.js?v=v1.0.0.0:146)
l (angular.min.js?v=v1.0.0.0:97)
J (angular.min.js?v=v1.0.0.0:102)
t.onload (angular.min.js?v=v1.0.0.0:103)
上面堆栈中的 $digest
需要14秒。我无法弄清楚如何优化它。
我的代码非常简单。
例如,我在上面提到的MyController中的函数是:
$scope.getData = function(Id)
{
MyService.getResponse(Id)
.then(function(response)
{
$scope.results = response;
},
function(message)
{
$scope.errorMessage = "Error Message";
});
}
答案 0 :(得分:0)
您需要显示您的代码。这个问题可能会发生,因为你的html绑定,一些js函数调用for循环/ ng-repeat,或者一些显式调用方法scope.apply()。
无论如何,我遇到了这样的问题,我按照这个链接来解决。
https://www.alexkras.com/11-tips-to-improve-angularjs-performance/
答案 1 :(得分:0)
如果你有2MB的json文本响应,你可能做错了。但是,假设你做得很好......
可行的解决方案: