使用定时器分解任务

使用定时器分解任务主要是针对那些比较影响性能,阻塞页面进程且无需同步的逻辑

function processArray(items,process,callback){
      var todo=items.concat();
      setTimeout(function(){
           process(todo.shift());
           if(todo.length>0){
                  setTimeout(arguments.callee,25)
           }
      },25);
}

  

时间: 2024-10-22 09:28:06

使用定时器分解任务的相关文章

JavaScript定时器分析

一.事件循环 JavaScript是单线程,同一个时间只能做一件事情,所以执行任务需要排队.如果前一个耗时很长,那么下一个只能等待. 1)两种任务 为了更好的处理任务,JavaScript语言的设计者将任务分为两种:同步任务(synchronous)与异步任务(asynchronous). 同步任务:在主线程上排队执行的任务. 异步任务:放在"任务队列"(task queue)中,只有当主线程空了,才会将"任务队列"中的任务放到主线程中. 这就是JavaScript

前端开发:setTimeout与setInterval 定时器与异步循环数组

前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的,在与博友的分享中可以学到新的知识.得到先驱者的指正.解决工作中遇到的难题.近一个月工作繁忙,新的文章也迟迟未写,今天呢,过来深入了解一下 关于javascript定时器的知识: setTimeout与setInterval简述 setTimeout与setInterval使用方法基本相同,他们接受两

改善JavaScript程序的188个建议

前言第1章 JavaScript语言基础建议1:警惕Unicode乱码建议2:正确辨析JavaScript句法中的词.句和段建议3:少全局变量污染建议4:注意JavaScript数据类型的特殊性 建议5:防止JavaScript自动插入分号建议6:正确处理JavaScript特殊值建议7:小心保留字的误用建议8:谨慎使用运算符建议9:不要信任hasOwnProperty建议:谨记对象空特性建议11:慎重使用伪数组建议12:避免使用with建议13:养成优化表达式的思维方式建议14:不要滥用eva

性能优化之快速响应的用户界面

用于执行JavaScript和更新用户界面的进程通常被称为“浏览器UI线程”.JavaScript和用户界面更新在同一个进程中运行,因此一次只能处理一件事情. ·任何JavaScript任务都不应当执行超过100毫秒,过长的运行时间导致UI更新出现明显延迟,从而会影响用户体验. ·浏览器有两类限制JavaScript任务的运行时间的机制,调用栈大小限制(即记录自脚本开始以来执行的语句的数量)和长时间运行脚本限制(记录脚本执行的总时长,超时的时候会有弹框提示用户[chrome没有单独的程云霞脚本限

《编写高质量代码:改善JavaScript程序的188个建议》学习小记(一)

作者介绍: 成林,资深Web前端工程师,从事Web前端工作多年,精通CSS.HTML.JavaScript.jQuery和Ajax等Web前端技术,在实践中积累了大量的经验.推崇Web技术标准,曾经在多所高等院校和一些线下技术沙龙主讲Web标准和规范相关的课程,曾经还参与过W3C组织的标准化文档的中文编译工作.近几年来,集中精力研究和实践CSS3和 HTML 5前沿技术,在国内是该领域的先驱者之一. 其中书的目录分类为以下几部分: 第1章 JavaScript语言基础 第2章 字符串.正则表达式

高性能JavaScript--读书笔记

一:加载和执行 1.<script>标签放在页面底部,</body>闭合标签之前,这能确保在脚本执行前页面已经完成渲染. 2.合并脚本.页面中<script>标签越少加载越快. 3.无阻塞下载脚本:defer(延迟加载).async(异步加载).动态创建<script>元素下载并执行.使用XHR对象下载js代码并注入页面中. 二.数据存取 四种基本数据存储方式:字面量(基本类型:字符串.数字.布尔值.对象.数组.函数.正则式,直接赋值不用new的等式右边的值

关于JavaScript定时器我的一些小理解

因为自己在平时工作中,有些功能需要用到定时器,但是定时器并不像我们表边上看到的那样,所以这周末我看看书查查资料,深入研究了一下JavaScript中的定时器,那么废话不多说,下面进入我们今天的正题. 大家都知道JavaScript是单线程的,所以不管是定时器还是用户的操作都是需要在线程队列中排队执行的. 一.定时器在执行线程队列里的分析 为了更好的理解我还是直接写个测试代码来看一下,这样分析起来更直观一些 1 <script type="text/javascript">

第十四篇:在SOUI中使用定时器

前言 定时器是win32编程中常用的制作动画效果的手段.在Win32编程中,可以使用::SetTimer来创建定时器,定时器消息会被会发到调用SetTimer时指定的HWND. 在SOUI中一般来说只有一个宿主窗口有HWND,所有的SWindow都属于一个宿主窗口,如此一来直接使用::SetTimer创建的定时器就难以直接分发到SWindow对象了. 在SOUI的控件中使用定时器 为了能够方便的在SWindow中使用定时器,在SOUI系统中,我们通过将定时器ID(共32位)按位进行分解: cla

高效软件定时器的设计

软件定时器在协议栈等很多场景都有广泛的应用,有时候会有大量的定时器同时处于工作状态,它们的超时时间各异,要高效的保证每个定时器都能够较为准确的超时并执行到其回调函数并不是一件易事.本文分析嵌入式实时操作系统Nucleus的定时器方案,它巧妙的管理了一条按照相对时间来排序的双向链表,避免每次tick中断都要遍历链表检查超时和更新剩余时间,实现了一种相当高效的软件定时器. 结构体TM_TCB来表示动态创建的定时器,其定义如下 typedef struct TM_TCB_STRUCT { /*Nucl