zoukankan      html  css  js  c++  java
  • 【笔记】js 关于定时器的理解

    总所周知 js 里面的 setTimeout() 方法是用来设定某些功能在某段时间间隔之后执行的。但是今天看了高程对定时器的描述发现并不是这样。

    setTimeout(function(){
        //.code
    }, 250);

    如上设置一个延迟执行的函数,字面上理解是匿名函数体内的代码将会在 250毫秒后执行,但是事实并不是这样。

    js 执行代码是单线程的,就是说只能逐个逐个执行(不知道说得对不对),将要执行的代码看成一条时间轴,首先执行的代码是script 标签内的一些对生命周期后面要用到的代码进行部署。当某段时间段空闲的时候,后面的代码才会被迅速被执行。举个例子:

    例如现在脚本里有这样一堆代码:

    var fn = function(){
        //里面的代码执行了300毫秒
    }();
    
    setTimeout(function(){
        //.code
    }, 250); 

    fn 这个自执行的函数执行的时候耗时300毫秒,然后才会到下面的 setTimeout 函数执行。

    换句话说 setTimeout 函数的执行是当当前执行环境空闲的时候再延迟250毫秒执行自身的代码块,当执行完了 fn 函数之后,环境再开始执行setTimeout 函数。

    所以setTimeout 这个函数实际上延迟了 300(fn 执行的时间) + 250(自身延迟时间)= 550毫秒 才被执行,有时候可能还会慢一点

  • 相关阅读:
    5月27日
    5月26日
    5月25日
    5月24日
    5月22日
    梦断代码(3)
    01团队冲刺
    07周总结
    06周总结
    构建之法阅读笔记
  • 原文地址:https://www.cnblogs.com/stitchgogo/p/6903280.html
Copyright © 2011-2022 走看看