码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript单线程实现

时间:2018-03-24 00:52:35      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:com   info   inter   提醒   console   color   gpo   spry   timeout   

对于Javascript的单线程实现一直一知半解的。开始以为很难,但是仔细看一下感觉还好。

首先明白一点,js是单线程的,也就是说js只能在同一时刻处理一段代码。但是js运行的环境浏览器却是可以多线程的,它具有多个线程,js代码处理引擎线程、事件触发线程、http请求线程、计时器触发线程。多者辅助,实现了js的异步处理。

准确的来说。这个实际上就是说,js引擎线程就是主程序。一旦碰上相应的例如计时器产生了,就先将这个定时器内部的代码先挂起,等到需要执行的时间到了,让计时器的线程提醒js该执行刚刚的代码了。js这样就达到了伪异步。

setTimeout(function(){
    console.log(‘settime‘);
}, 0);
console.log(‘now‘);

例如以上输出的就实现输出now,然后输出settime。技术分享图片

这个是让我觉得最清楚的一个图了。蓝色整体代表着js引擎中要执行的代码部分。蓝色javascript的块是现在要执行的代码部分当我们想要出发interval或者点击事件等得时候事情都需要往后排。直到当前执行结束之后再进行处理后面的得代码。但是settimeout和setinterval还有一些区别,settimeout如果产生了,就将事情放到等待处理的序列中,但是settimeout每次毁掉触发的时候只会保留第一次需要执行的代码部分,如果第二次需要触发的时候,其中js引擎有使用的时候,就会将这一次回调触发抛弃。直到js部分闲下来了,就会立刻执行。

 

详细标准:

http://www.cnblogs.com/sprying/archive/2013/05/26/3100639.html

Javascript单线程实现

标签:com   info   inter   提醒   console   color   gpo   spry   timeout   

原文地址:https://www.cnblogs.com/acefeng/p/8635518.html

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