高级程序设计——高级定时器

本文介绍了JavaScript中定时器的工作原理,包括单线程环境下的代码执行顺序和定时器的插入机制。讨论了setInterval可能导致的问题,提出使用链式setTimeout来避免连续执行,并解释了Yielding Processes的概念,建议在处理大量数据时采用定时器分块技术。最后,文章阐述了函数节流在处理如onresize事件时的重要性,以防止浏览器性能问题。
摘要由CSDN通过智能技术生成

前言

  1. JavaScript是运行于单线程的环境中的,而定时器仅仅只是计划代码在未来的某个时间执行。浏览器负责进行排序,指派某段代码在某个时间点运行的优先级

  2. 可以把JavaScript想象成在时间线上运行的。 当页面载入时,首先执行的是任何包含在<script>元素中的代码。在这之后,JavaScript进程将等待更多代码执行。当进程空闲的时候,下一个代码会被触发并立刻执行。

  3. 除了主JavaScript执行进程外,还有一个需要在进程下一次空闲时执行的代码队列。随着页面在其生命周期中的推移,代码会按照执行顺序添加入队列。在JavaScript中没有任何代码是立刻执行的,但一旦进程空闲则尽快执行

  4. 定时器对队列的工作方式是,当特定时间过去后将代码插入队列中,而不是何时实际执行代码。

  5. Firefox中定时器的实现还能让你确定定时器过了多久才执行,这需传递一个实际执行的时间与指定的间隔的差值。

    setTimeout(function(diff){
         
        if(diff>0){
            //晚调用
        }
        else if(diff<0>){
            //早调用
        }
        else{
            //调用及时
        }
    },250);

    执行完一套代码后,JavaScript进程返回一段很短的时间,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值