JavaScript螺纹的问题和答案
2015-09-09 16:24
519 查看
要求:
关于句柄 handler的一些理解:
JavaScript是单线程的,有任务队列。比方使用setTimeou(func,secs)来在secs毫秒后向任务队列加入func。可是,setTimeout后面跟一个死循环,那么死循环导致任务被堵塞,也就是说func不能运行。 我想请教一下:死循环在运行的时候,secs毫秒过去的时候,func是否被加入到任务队列中?假设加入了,但JS是单线程的,不是在这个线程中加入的,那在哪里被加入的?求大神解答下,找乐非常多东西,都是和JavaScript高级程序设计上的说法一样.答:
原因是 JS 是单线程的。可是浏览器是多线程的。甚至是多进程的。 所以。同一个标签页,仅仅有一个解释器。可能iframe有多个吧。。。 加入维护是其它线程干的事,运行是单线程解释器干的事。 就如同Java,有反射机制吧,window 是一个 host宿主对象。也就是他自身使用 C语言实现的。不在 JS的解释器线程控制之内,仅仅是进行交互。所以。。。 你明确了吧,逻辑上JS是单线程,但实际上有非常多个其它的线程在辅助这个解释器。 实现细节上仅仅要能保证单线程的逻辑完整性即可了
关于句柄 handler的一些理解:
句柄。 handler,事实上这个词翻译的挺形象的,尽管不太好理解。 你能够理解成电视机的遥控器,遥控器在手。就相当于获取了电视机这个对象,想让电视机干什么。那就操作这个“电视机对象” 即可。 持久化,一般来说就是指存到数据库;在内存里,就不叫持久化。 重新启动后还光临。那是的持久性。
相关文章推荐
- Jsoncpp简介
- 转化一个数字数组为function数组(每个function都弹出相应的数字),闭包的使用
- NewtonSoft.json 序列化和反序列化实例
- 浅谈javascript函数劫持
- javascript -- 判断是否为某个数据类型
- 用JS判断IE版本的代码
- js基本概念注意点—数据类型
- 找出数值数组中最大的元素(使用Math.max函数)
- Json学习笔记
- js 图片延时加载
- javascript学习
- 高性能JavaScript模板引擎原理解析
- The DOM in JavaScript
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- 防止form重复提交
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- js页面加载顺序
- JS,JQ点击事件
- js获取某个ID的class名称
- javascript小插件-多选框全选