【问题标题】:Why is there no $interval in AngularJS? [closed]为什么AngularJS中没有$interval? [关闭]
【发布时间】:2013-08-21 16:48:16
【问题描述】:

AngularJS 有一个 $timeout 服务,它作为 setTimeout 的便捷包装器。

为什么没有 setInterval 的等价物?

【问题讨论】:

  • 您可能会发现这很有用stackoverflow.com/questions/14237070/…
  • 嗯,是的,也不是;-)。了解如何实现它很有用,但它并没有解释它为什么会这样。这就是我的问题;-)
  • 我认为实现起来很棘手,因为你最终会得到很多回调,而且很难处理 scope.apply。但不是 $timeout。 $timeout 只是setTimeout() 的包装器,最后调用scope.apply。因此,按照相同的约定实现 $interval 并没有太大意义,因为您必须定期调用 scope.apply,这很昂贵。

标签: angularjs


【解决方案1】:

由于 $timeout 是在每次调用后调用scope.apply,它可能会变得昂贵。但是,创建一个简单的间隔,您可以决定需要哪些监视和应用调用来保持它的干净。

例如,如果您间隔每分钟运行一次以检查用户的值是否已更改,如果自上次检查后值已更改,则可选择保存它。根据您编写代码的方式,您可能永远不需要更新网页,因此您的interval 可以在不触发更新的情况下正常运行。

这并不能直接回答为什么默认情况下不提供 $interval 的问题,但我怀疑这是因为根据您的特定要求创建您自己的很简单,最好将它留给您增强,而不是提供一个太复杂或太不灵活的默认实现。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 2011-03-27
  • 2014-03-13
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多