$digest循环分为两个部分:
- $watch列表
- $evalAsync列表
$watch列表($$watchers)
watch列表是digest循环期间监控的所有变化的集合。digest循环期间,这些watch列表会在$digest循环中通过一个叫做“脏值检查”的程序解析。
脏值检测
脏值检查是一个简单的过程,可归结为一个非常基础的概念:检查值是否发生了变化,而整个应用还没同步该变化。
Angular会遍历$watch列表,如果从旧值更新后的值没有发生变化,它会继续遍历监控列表。如果值发生了变化,该应用会启用新值并继续遍历$watch列表,Anguar遍历完整个$watch列表,只要有任何值发生变化,应用将会退回到$watch循环中,直到检测到不再有任何变化。
$evalAsync 列表($$asyncQueue)
$evalAsync()方法是一种在当前作用域上调度表达式在未来某个时刻运行的方式。$digest循环运行的第二个操作是执行$$asyncQueue。可以使用$evalAsync()方法访问这个工作队列。
本文深入探讨了AngularJS中消化循环的工作原理,包括$watch列表和$evalAsync列表的作用及其实现方式。消化循环通过脏值检查来监测应用程序状态的变化,并确保用户界面能够及时更新。
852

被折叠的 条评论
为什么被折叠?



