灵感来自 Nicholas C. Zakas 的 Timed array processing in JavaScript.
做了个加载大容量表格数据的实例:array-processing.html
几点说明:
- timedChunk 函数是精华,里面的 50ms 来自 Response Time Overview 中的调查结果:100ms 内的响应能让用户感觉非常流畅。50ms 是 Nicholas 针对 JavaScript 得出的最佳经验值。
- setTimeout 延时 25ms, 是因为浏览器的时间分辨率问题。25ms 可以保证主流浏览器都顺畅(有喘息的机会去更新 UI)。
- 上面的实例,传统方式加载会让浏览器在加载数据期间,无法更新界面和响应任何操作。采用分时加载,则可以让浏览器始终保持可响应状态,提升界面流畅性和用户体验。
- 顺便八卦:Safari 4 和 Chrome 2 真不是吹的,速度嗖嗖的。相比,Firefox 和 IE 慢得够可以。
- Opera 依旧保持怪胎特性,传统方式加载也能保持界面的更新和响应,可惜速度不佳,喜忧参半。
- 最后,很钦佩 Nicholas C. Zakas. 短短的一段代码,蕴含了博学的可用性知识 + 专业的 JS 技能 + 细心的疯狂测试。如此牛人,实在是学习的绝佳榜样。
出处:http://lifesinger.org