我已经使用 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/