码迷,mamicode.com
首页 > Web开发 > 详细

也说说angularJs里的evalAsync

时间:2014-11-04 16:31:59      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   ar   sp   on   cti   代码   bs   line   as   

虽说angular都快出2.0了,到了2.0这些东东都会被干掉。不过我们眼前的事还是要处理。

$evalAsync和$timeout到底什么区别,网上说法很多,最近看到的是说在directive里就怎么怎么,在controller里就怎么怎么。

可我只是用在一个事件的回调函数里,算那种呢?挺乱的。还是自己查查源码算了。

 

$timeout比较好理解,就是在所有事情处理完,包括浏览器渲染也做完,在调度队列末尾插入我们要执行的代码。所以通过timeout来调用,肯定会很晚执行。

$evalAsync,其实要注意的是这个不是一个全局方法,调用的时候写的是‘$scope.$evalAsync‘,有这个scope的作用域的。源码里面在digest方法里是这样子滴:

 

digest:

....

while(asyncQueue.length || isDirty){

  处理asyncQueue

  递归处理scope上的dirty check

}

 

可见,如果某一次dirty check时,调用了一次evalAsync,把要执行的代码放到了asyncQueue,那就总要等到这一个tick的dirty check做完,下一个tick开始的时候才会执行。

 

也说说angularJs里的evalAsync

标签:style   ar   sp   on   cti   代码   bs   line   as   

原文地址:http://www.cnblogs.com/djx0126/p/4073622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!