美文网首页
定时器的设计理念

定时器的设计理念

作者: SeanKChan | 来源:发表于2016-03-28 10:34 被阅读26次

时间碎片化

总所周知,浏览器是单线程运行的(web worker除外),当一个按钮点击的过程中,会产生UI事务和JavaScript事务,同时推送到队列中,等待执行。

业务较复杂的脚本执行耗时较长处理时间超过100ms时,导致UI更新和其他脚本事件无法执行,影响用户体验。
定时器的出现就是为了解决这个问题,设计理念是将复杂的脚本事务切割成单个事务,让耗时的事务让出时间,切换任务执行。

代码块

var btn = document.getElementById('myBtn');
btn.onclick = function(){
  onProcessMethod();
  setTimeout(function(){
      this.style.backgroundcolor = 'red';
    },50);
  finishedProcessMethod();
};

定时器中的事件会放到任务队列中,当btn.onclick事件执行完成之后,队列中的定时器事件开始执行,这样做的意义在于保证btn.onclik事件完整执行,50ms这个参数并不保证定时器事件一定执行。

Tips:setInterval()和setTimeout()最大的区别在于前者会重复向队列中推送任务

相关文章

  • 定时器的设计理念

    时间碎片化 总所周知,浏览器是单线程运行的(web worker除外),当一个按钮点击的过程中,会产生UI事务和J...

  • RTOS基础(软定时器)

    软定时器原理与创建 问题概述 设计原理 设计实现 软定时器的启动与停止 设计原理 设计实现 软定时器的删除与状态查...

  • 定时器的设计与实现

    参照Ceph的定时器的设计。设计原理: 定时器线程,处理定时任务 利用context_map = std::mul...

  • Golang-基于TimeingWheel定时器

    设计思路 在linux下实现定时器主要有如下方式 基于链表实现定时器 基于排序链表实现定时器 基于最小堆实现定时器...

  • 飞机大战

    # 敌机出场 ##目标 *使用**定时器**添加敌机 *设计`Enemy`类 ## 01. 使用定时器添加敌机 运...

  • 设计的理念。

    装修总是要找设计,先提出客户的需求,与设计师碰撞思想,形成装修的思路。 一般来说,设计是按照平米数进行收费的,面积...

  • Python:飞机大战游戏5:敌人飞机

    一、内容 1.1、使用 定时器 添加敌机 1.2、设计 enemy 类 二、使用 定时器 添加敌机 2.1、我们所...

  • 设计理念

    很多顾客都会说,你看着给我剪吧,看着给我设计吧,你是专业的,怎么好看怎么给我剪吧! 但是我要说一句,设计=今天我给...

  • 设计理念

    昨天同事要写一个设计理念,有时候是真的没理念的,非要说理念,那么抽象的东西转化成文字经常就结结巴巴写不好。 同事找...

  • 设计理念

    大繁至简!挖掘事物的本质,即找到事物结构最简单的基本单元,这就是化繁为简的方法! 复杂的人性,复杂的产...

网友评论

      本文标题:定时器的设计理念

      本文链接:https://www.haomeiwen.com/subject/rjwphttx.html