`
yanghuidang
  • 浏览: 950394 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何在JavaScript中处理大量数据

阅读更多

 在之前的文章中,我们讲了浏览器对于JavaScript代码执行的限制和基于计时器的伪线程机制。这里,我们再看看如何在JavaScript中处理大量数据。

  在几年之前,开发人员不会去考虑在服务端之外处理大量的数据。现在这种观念已经改变了,很多Ajax程序需要在客户端和服务器端传输大量的数 据。此外,更新DOM节点的处理在浏览器端来看也是一个很耗时的工作。而且,需要对这些信息进行分析处理的时候也很可能导致程序无响应,浏览器抛出错误。

  将需要大量处理数据的过程分割成很多小段,然后通过JavaScript的计时器来分别执行,就可以防止浏览器假死。先看看怎么开始:

function ProcessArray(data,handler,callback){

  ProcessArray()方法支持三个参数:

  • data:需要处理的数据
  • handler:处理每条数据的函数
  • callback:回调函数

  然后定义一些变量:

var maxtime = 100 ; var delay = 20 ; var queue = data.concat();

  maxtime表示每个处理进程的最大毫秒数。delay表示每个程序块之间的毫秒数。queue是源数据的复制,虽然不是在所有情景下都必要,但是我们是通过传递引用修改的,所以最好还是备份一下。

  然后就可以使用setTimeout()方法来处理了:

setTimeout( function (){ var endtime = new Date() + maxtime; do { hanler(queue.shift()); } while (queue.length > 0 && endtime > new Date());

  首先,先计算endtime,这是程序处理的最大时间。do.while 循环用来处理每一个小块的数据,直到循环全部完成或者超时。

  为什么使用do..while循环呢?
  JavaScript支持while和do…while循环。不同之处在于do..while循环回至少执行一次。如果使用while循环,那么当开发者设置一个很小或者很低的endtime值的时候,那么处理就根本不会执行了。

  最后,我们再决定是否需要处理其他的数据,如果需要,那么就再调用一次:

if (queue.length > 0 ) { setTimeout(arguments.callee, delay); } else { if (callback) callback(); } }, delay); }

  这样回调函数会在每一个数据都处理结束的时候执行。我们可以通过ProcessArray()来测试一小组数据:

// process an individual data item function Process(dataitem) { console.log(dataitem); } // processing is complete function Done() { console.log( " Done " ); } // test data var data = []; for ( var i = 0 ; i < 500 ; i ++ ) data[i] = i; // process all items ProcessArray(data, Process, Done);

  这个方法在任何浏览器中都可以执行,不过HTML5提供了更好的办法,Rockux在以后的文章中会提到。

0
0
分享到:
评论

相关推荐

    js前端Excel大数据处理导入

    随着Web应用程序对数据处理能力的需求提升,前端工程师必须找到有效地处理大量数据的方法,而不仅仅是依赖后端服务器。本主题将深入探讨如何使用JavaScript来处理Excel文件,尤其是面对大数据量时的策略。 首先,...

    javascript读取Json数据分页显示

    在处理大量数据时,分页是一种常见的优化策略,可以提高网页性能并提升用户体验。在这个场景中,我们将讨论如何使用JavaScript从JSON数据源中读取数据,并实现支持键盘和滚轮翻页的功能。 首先,JSON(JavaScript ...

    javascript中文经典帮助手册

    异步编程是JavaScript处理耗时操作的方式,常见的有回调函数、Promise和async/await等。 ES6(ECMAScript 2015)引入了许多新特性,如类(class)、模块(import/export)、箭头函数(=&gt;)、解构赋值、let/const...

    基于JavaScript引擎的终端动态数据处理方法.pdf

    例如,在车载信息娱乐系统中,可以利用JavaScript引擎实时处理车辆状态数据,并根据驾驶者的需求动态展示信息,同时,还可以实现与云端服务的交互,获取最新的导航信息或天气数据。 总结来说,基于JavaScript引擎的...

    javascript实现中文输入法

    6. **性能优化**:实时处理拼音和候选词可能会带来性能问题,特别是在处理大量汉字时。因此,优化算法和数据结构,如使用前缀树(Trie树)来快速查找拼音对应的汉字,是必要的。 7. **自定义词库**:为了提高输入...

    JavaScript标准参考教程

    数组作为JavaScript中重要的数据结构,其章节详述了数组的定义、length属性、数组的空位处理以及ECMAScript 5中新增的数组方法(如map、forEach等),这些方法极大地增强了数组操作的灵活性和功能性。 函数章节讲解...

    JavaScript_无限画布数据的开放文件格式.zip

    在JavaScript中,JSON是原生支持的,这使得在JavaScript中处理JSON数据非常方便。在无限画布的场景中,使用JSON存储画布状态可以确保数据的可移植性,当用户保存或加载他们的工作时,这些数据可以被轻松地序列化和反...

    javascript string字符串优化问题

    作者通过打开任务管理器查看,发现刷新浏览器后内存使用量有所下降,这提示了在处理大量数据时,浏览器可能会延迟释放内存,特别是在JavaScript中操作DOM或者进行大量数据处理时需要注意内存的管理问题。 4. 内存...

    一个用于将JSON数据转换为Table的JavaScript库

    6. **性能优化**:当处理大量数据时,效率问题不容忽视。json-table-converter库可能会采取一些优化措施,如延迟渲染、分页显示等,以确保在大型数据集上的流畅性能。 7. **兼容性**:作为JavaScript库,json-table...

    在JavaScript中实现的算法和数据结构,并附有进一步阅读的解释和链接.zip

    在JavaScript中,理解这些算法能帮助优化搜索性能,尤其是在大量数据中寻找特定值时。 3. **数据结构**: - **数组**:JavaScript中的数组是最基本的数据结构,可以存储任意类型的元素。 - **链表**:链表在...

    基于Kafka和JavaScript的城轨信号系统智能运维数据采集与处理方法.pdf

    1. Kafka 数据采集:Kafka 是一种流行的开源分布式流处理平台,能够高效地处理大量的数据流。通过 Kafka 系统集中采集不同信号专业的运维数据。 2. JavaScript 脚本处理:JavaScript 是一种广泛应用于 Web 开发的...

    利用JAVASCRIPT即你想那个GZIP压缩与解压缩

    在描述中提到,“最近流行的网络游戏(FLASH)数据传输都是用GZIP进行压缩与解压缩的”,这是因为网络游戏往往需要大量数据交换,如图像、音频和游戏状态等,GZIP压缩可以显著减少这些数据在网络中传输的时间,提高...

    Manning.Data.Wrangling.with.JavaScript.pdf

    8. 处理大量数据 - 大量数据处理通常需要借助数据库、数据仓库和大数据处理框架,比如Hadoop和Spark。 - 这部分还可能涉及数据挖掘算法的应用,以及机器学习技术。 9. 实践数据分析 - 数据分析是使用统计学方法...

    C/S技术HTML中JAVASCRIPT的高级运用

    5. **模板引擎**:如Handlebars或Mustache等JavaScript库,可以帮助开发者更方便地生成动态HTML,尤其在处理大量数据时,能提高效率和可读性。 6. **前端路由**:对于单页应用(SPA),JavaScript可以实现前端路由...

    JavaScript中地球上最快的位置空间索引

    传统的线性搜索效率低下,而位置空间索引如R树、kd树、Quadtree等,能够以较高的效率处理大量的二维空间数据。 JavaScript是一种广泛用于Web开发的脚本语言,特别是在前端交互和地图应用中。由于JavaScript的运行...

    Data Wrangling with JavaScript

    “Dealing with huge data files”和“Working with a mountain of data”章节可能涉及大量数据的处理。当数据集非常庞大时,传统的数据处理方法可能不再适用,因此这部分内容可能会介绍如何使用流处理、数据分片等...

    javascript处理本地文件的资料

    在探讨JavaScript处理本地文件的能力时,我们主要关注的是在客户端(即用户浏览器)与服务器端进行文件操作的不同方法。由于安全限制,纯JavaScript在浏览器环境中直接读写用户计算机上的文件受到严格限制。然而,...

    Javascript & Ajax 中文手册

    JavaScript 和 AJAX 是 web 开发中的两个重要概念,它们在创建动态和交互式的网页方面起着至关重要的作用。这个"Javascript & Ajax 中文手册"是由知名的在线学习平台 w3school 提供的,它为学习者提供了丰富的教程和...

    JavaScript语言精粹完整版

    《JavaScript语言精粹》还提供了大量实战案例,涵盖了从简单的代码片段到复杂的Web应用开发,帮助读者将理论知识应用于实际场景中,加深理解和记忆。 ### 总结 《JavaScript语言精粹》是一部深入剖析JavaScript语言...

    javascript数据库大图片

    在学习过程中,你可以通过分析和运行这些示例,深入了解JavaScript在数据库操作中的应用,并提升在实际项目中的数据管理能力。同时,"qingyuan"这个标签可能代表这是一个开源项目或者社区资源,鼓励大家共同学习和...

Global site tag (gtag.js) - Google Analytics