angularjs - AngularJS 中的 $evalAsync 和 $timeout 有什么区别?

标签 angularjs angularjs-timeout

我已经使用 AngularJS 一段时间了,发现需要使用 $timeout每隔一段时间(似乎通常是初始化一个 jQuery 插件)。

最近,我一直在尝试更好、更深入地了解摘要循环,我遇到了 $evalAsync功能。

看起来该函数产生与 $timeout 类似的结果,只是你不给它延迟。每次我使用 $timeout 时,延迟都是 0,所以现在我想知道是否应该使用 $evalAsync 来代替。

两者之间有什么根本区别吗?您会使用哪种情况而不是另一种情况?我想更好地了解何时使用哪个。

最佳答案

我最近在这里回答了这个问题:https://stackoverflow.com/a/17239084/215945 (该答案链接到一些与 Misko 的 github 交流。)

总结:

  • 如果代码使用指令中的 $evalAsync 进行排队,那么它应该在 Angular 操作 DOM 之后运行,但之前运行浏览器渲染
  • 如果代码使用 Controller 中的 $evalAsync 进行排队,它应该在 Angular 操作 DOM 之前(以及浏览器渲染之前)运行 - 很少这样做你想要这个
  • 如果代码使用 $timeout 进行排队,那么它应该在 Angular 操作 DOM 之后以及浏览器渲染之后运行(在某些情况下可能会导致闪烁)

关于angularjs - AngularJS 中的 $evalAsync 和 $timeout 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17301572/

相关文章:

javascript - 如何让 Angular 与外部 SDK 一起工作 : (e. g.,在 SDK 异步调用后更新 DOM)

javascript - 如何清除angularjs中的$timeout

javascript - 如何在 angularjs 拦截器中重定向,除非出现错误?

angularjs - Angular 文档 : how can one share stateless/stateful code between controllers?

AngularJS:为什么以及何时需要调用 $timeout?

javascript - 延迟后触发 ng-show

javascript - AngularJS:注入(inject) $timeout 在指令中不可用

javascript - AngularJS:toArray orderBy 不适用于键、值对上的 ng-repeat

javascript - ng-click 不在 Ionic 中触发