当前位置: 首页 > 面试题库 >

什么是“更便宜”的性能明智的$ broadcast或$ watch

昌博易
2023-03-14
问题内容

我的应用程序中有一种情况,每次用户角色更改时,我都需要重新加载菜单(一个用户可以在多家公司中担任角色)。

我想知道什么是解决此问题的最佳方法。

目前,我正在执行以下操作:

app.controller('menuLoadingCtrl', function($location, $scope, authService){
    $scope.model.initialRole = authService.getRole();
    $scope.$watch(function(){return authService.getRole()}, function(val){
        if(val && val != $scope.model.initialRole){
                $scope.layout.menuSrc = 'partials/menu.html';
        }
    });
})

简单地将用户重定向到菜单加载视图,然后在角色完成加载后从那里返回菜单视图。我把它包装在一个函数中:

 $scope.layout.reloadMenu = function(){
        $scope.layout.menuSrc = 'partials/menuLoading.html';
    }

在我想重新加载菜单的任何情况下都可以调用它。

我想知道是否可以通过从$ rootScope上的服务广播此事件,然后在控制器中侦听该事件,从而使此过程更加自动化。

任何对此想法/建议将不胜感激。


问题答案:

$watch()正在进行污垢检查:该功能在每个摘要周期进行比较。另一方面,$broadcast()仅在有事件时传播事件。自然,$broadcast()它比便宜$watch()

但是您真的要担心这里的性能吗?一个按周期进行的原始比较是一无所获。但是,从概念上讲,$watch()这显然是您所需要的:您希望 每次变量更改时
都执行一个操作。我无法想象$broadcast()在这里使用。



 类似资料:
  • 问题内容: 在(尤其是)以下mysql中进行查询时,是否有更好的性能: 过度: 或BETWEEN语法仅被第二个sql替代? 问题答案: 我记得,没有区别。但是,请自己看看是否: 和: 制定相同的计划。

  • 问题内容: 我总是看到人们使用它来造成处理延迟或类似的事情,人们总是为使用这种方式而感到嘲笑。 什么时候明智/需要使用? 问题答案: 当您确实需要延迟后台线程时,应该致电。 不要调用它来帮助同步(不会),不要在循环中调用它来等待某些东西(这会很慢),也不要在UI线程上调用它(它会冻结)。

  • 问题内容: Eclipse 3.5具有一个非常好的功能,可以生成Java hashCode()函数。例如,它将生成(略微缩短:) (如果类中具有更多属性,则为每个其他属性重复此操作。对于ints,可以省略.hashCode()。) 这似乎很好,但是对于首选的31。它可能取自JavaString的hashCode实现,出于性能原因而使用该特性,在引入硬件乘法器之后就已经不复存在了。在这里,对于i和j

  • 主要内容:写在前面的话,人工智能应用,人工智能发展简史,机器学习&深度学习很早就想写一门关于 Python“机器学习”的教程,不过碍于自身知识的局限性,不知如何下手。如果写的教程通篇只是探讨代码、数学知识、算法原理,这样的教程读起来必然索然无味。经过冥思苦想,终于突发灵感,可不可以写一部关于“机器学习算法”的入门教程呢?让初学者更容易理解常用的机器学习算法,从而帮助那些想要了解机器学习的人,打开通往人工智能世界的大门。 写在前面的话 机器学习是一门涉及了大量逻辑与算法的

  • 我读过这个主题:C#线程安全快速(est)计数器,并在我的并行代码中实现了这个特性。据我所知,这一切都很好,但它大大增加了处理时间,大约10%。 这让我有点担心,我认为问题在于我做了大量相对便宜的产品( 现在,我看不到解决的办法,但也许我错过了一些明显的东西。我甚至在考虑使用n个计数器(对应于并行化程度),然后在特定的核上增加每个计数器,但这似乎不可行(检测我在哪个核上可能会更昂贵,更不用说复杂的

  • 问题内容: 以下是EnumMap的Java文档的 “ 实现注释” 部分的内容: 实施注意事项:所有基本操作均按固定时间执行。它们可能(尽管不能保证)比其HashMap同行更快。 我在java doc中也看到了类似的内容。我想知道为什么它比散列的同行更有可能而且会更快? 问题答案: 由位数组支持。由于您可以预先输入不同项目的数量,因此我们可以简单地为每个枚举值保留一位。您可以想象对或进行类似的优化,