标签: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开始的时候才会执行。
标签:style ar sp on cti 代码 bs line as
原文地址:http://www.cnblogs.com/djx0126/p/4073622.html