zoukankan      html  css  js  c++  java
  • Javascript单线程实现

    对于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

  • 相关阅读:
    在rhel6上安装Python 2.7和Python 3.3
    RHEL7 -- Linux搭建FTP虚拟用户
    RHCE7 -- IPv6
    RHEL7 -- nmcli的使用
    设置Adobe Reader打开PDF文件保持记忆功能
    iptalbes -F
    服务器IP地址后修改SQL Server配置
    配置SELINUX
    11G新特性 -- 分区表和增量统计信息
    11G新特性 -- Statistics Preferences
  • 原文地址:https://www.cnblogs.com/acefeng/p/8635518.html
Copyright © 2011-2022 走看看