小编典典

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

angularjs

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

最近,我一直在尝试更好地和更深入地了解摘要周期,并且遇到$
evalAsync
函数。

似乎该函数产生与相似的结果$timeout,只是您不给它延迟。每次使用时,$timeout它的延迟都为0,所以现在我想知道是否应该使用它$evalAsync

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


阅读 284

收藏
2020-07-04

共1个答案

小编典典

总结一下:

  • 如果使用 指令中的$ evalAsync将 代码 放入 队列中,则该代码应 Angular处理DOM 之后 浏览器呈现 之前运行
  • 如果代码是使用 $ evalAsync从控制器 排队的,则它应该 Angular操纵DOM之前(以及在浏览器呈现之前)运行-您很少需要这样做
  • 如果代码使用 $ timeout 排队,则应 Angular操作DOM 之后 和浏览器渲染 之后 运行代码(在某些情况下可能导致闪烁)
2020-07-04