setTimeout机制的思考
来源:互联网 发布:网络虚拟手机号发短信 编辑:程序博客网 时间:2024/06/09 20:24
我一直在思考为什么js是单线程的,今天看到了阮一峰大神的解释,一下子想通了,js是用来互动的,如果是多线程,这个时候如果多个线程同时对一个dom操作怎么办,不过我记得我在一本书上看过,在操作系统中也是有着多线程控制的,进行权限管理,但是js为什么没有做我也说不明白,说回来setTimeout。这个东西为什么出现,还是为了解决js单线程问题,js是单线程的但是浏览器是多线程的,这就会出现一个问题,那就是虽然js可以等一个时间很长的函数执行,但是浏览器不能等,用户更不可能等,这个时候setTImeout就出现了,刚开始的时候我以为就是说一个函数执行完,等多少秒就开始进行setTime的函数,这么说对也不对,为什么对,js是单线程的当任务多的时候他就会将所有的任务推入队列一个一个执行,如果setTimeout前面他没有函数执行了,那么就轮到他执行了,要是还有就不行了,简而言之,setTimeout的延时是延时一定时间将其推入队列等待执行,而且还不是当前函数执行完毕就会立即执行,setTimeout会等待级别更高的函数都执行完,简而言之setTimeout是个后娘养的,他不受疼爱,这会出现一个很大的问题,我们在for循环中如果用setTimeout进行打印,那么他不是一个个的打出,而是等待一段时间一次性的打印出来。这也就在我今天写颜色变化函数的时候给了我很大的困扰,最后抄袭了一位大神才得以解决,
阮一峰大神关于js运行机制的文章:http://www.ruanyifeng.com/blog/2014/10/event-loop.html;
关于setTImeout运行机制的文章:http://www.cnblogs.com/zichi/p/4604053.html,
http://www.cnblogs.com/dojo-lzz/p/4606448.html
- setTimeout机制的思考
- js的setTimeout异步机制
- setTimeout / setInterval 定时器的一点思考
- 关于setTimeout,理解JavaScript的定时机制
- 由setTimeout引出的事件循环机制
- 由一道面试题引发的setTimeout的用法思考
- 【js思考】setInterval与setTimeout
- setTimeout 深入分析其机制
- 动态协议跟踪机制的思考
- JQuery事件----冒泡机制的思考
- 思考游戏服务器的tick机制
- JQuery事件----冒泡机制的思考
- Java反射机制的一点思考
- 对于防刷票机制方案的思考
- 关于nginx中upstream机制的思考
- 对手机支付安全机制的思考
- Java反射机制的一点思考
- 关于Spinlock机制的一点思考
- leetcode【第八周】链表划分
- JAVA 中native关键字
- oralce命令行与简单查询
- poj 1745 Divisibility dp
- 自定义View_绘制圆_进行拖动(不出屏幕)放大缩小
- setTimeout机制的思考
- 区间DP
- Cesium应用篇:3控件(5)CesiumInspector
- Java 泛型
- [BZOJ4698][Sdoi2008]Sandy的卡片(后缀数组+st表||后缀自动机)
- 关于HIS客户端程序登陆后提示“the oracle library OCI.DLL could not be loaded”
- 用 CSS 实现三角形与平行四边形
- Wu Xing
- 源码分析mycat1.6之mysql通信协议篇之COM_QUERY(SELECT语句报文解析)