也说说angularJs里的evalAsync
2024-08-28 20:12:49
虽说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开始的时候才会执行。
最新文章
- C#中日期和时间相加的方法
- 关于xml配置实现AOP的小知识
- python操作mysql数据库的相关操作实例
- 枚举GC Roots的实现
- hdu4436-str2int(后缀数组 or 后缀自动机)
- 为知笔记markdown插件安装
- HTML 脚本
- CF #349 div1 B. World Tour
- JAVA基础——Arrays工具类十大常用方法
- spark调用hdfsAPI
- 探索 | “中医+AI”会诊电力设备故障
- 前端nginx+Java后台ftp处理页面图片上传踩坑
- 【Spring】23、ApplicationContext ,ApplicationContextAware,Listener,Event 的关系解读
- myeclipse提示错误。
- hibernate的findByExample 外键参数查询解决方案
- [工作代码]dom4j解析实例
- JavaScript 之call , apply 和prototype 介绍
- ORACLE查询表最近更改的数据 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE
- 【摘要】JavaScript 的性能优化:加载和执行
- Android支付接入之Google In-app-Billing