阅读背景:

与AngularJS的约会之事件循环+watchers源码分析

来源:互联网 

ng中说到事件轮询,第一个拿出来的肯定是digest函数啦,在digest()的事件轮询中,一共会轮询两个列表,一个为AsyncEvalQueue,一个为Watchers列表,apply方法进入ng上下文执行的Callback fn将其context修改为ng的控制域,先从queue取出每一个asyncTask,获取其scope通过*eval方法进行callbackfn目标的expression计算,以及修改值引起$watch的调用,导致监听器被触发,dirtycheck在digest()中执行,遍历watchers列表,当有newvalue出现时触发监听器listenerFn的回调修改model并重新绘制dom节点,然后再将脏值置位,即还要进行一次dirtycheck才可以判断数据已经稳定,当且仅当数据稳定时digest才算执行完毕,即queue为空且watchers列表的所有值的脏值都为false,即不需要进行过多的检测了,已经稳定(ttl=10)最多检测次数为ttl设定值。 ng中说到事件轮询,第一个拿出来的肯定是digest函数啦,在digest()的事件轮询中,一共会轮




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: