angular.js的$digest循环

$digest循环分为两个部分:

  • $watch列表
  • $evalAsync列表

$watch列表($$watchers)

watch digest循环期间监控的所有变化的集合。 digest watch列表会在$digest循环中通过一个叫做“脏值检查”的程序解析。

脏值检测

脏值检查是一个简单的过程,可归结为一个非常基础的概念:检查值是否发生了变化,而整个应用还没同步该变化。
Angular会遍历$watch列表,如果从旧值更新后的值没有发生变化,它会继续遍历监控列表。如果值发生了变化,该应用会启用新值并继续遍历$watch列表,Anguar遍历完整个$watch列表,只要有任何值发生变化,应用将会退回到$watch循环中,直到检测到不再有任何变化。

$evalAsync 列表($$asyncQueue

$evalAsync()方法是一种在当前作用域上调度表达式在未来某个时刻运行的方式。$digest循环运行的第二个操作是执行$$asyncQueue。可以使用$evalAsync()方法访问这个工作队列。

$apply

Created with Raphaël 2.1.0 调用$apply 进入angular上下文 调用$digest循环 脏值检测 检测到无变化 退出$digest,控制权交给浏览器 yes no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值