js性能优化之分时函数
2017-04-25 16:05
435 查看
分时函数和函数节流的问题不一样,函数节流针对的事件不是用户主动调用的,前面已经提过了。
函数节流的原理是:延迟当前函数的执行,如果该次延迟还没有完成,那么忽略接下来该函数的请求。也就是说会忽略掉很多函数请求。
分时函数处理的问题是用户主动调用的,比如插入千百个节点
分时函数的原理是让创建节点的工作分批进行,比如把1s创建1000个节点,改为每200ms创建8个节点(其实就是一种异步函数的思想)
函数节流的原理是:延迟当前函数的执行,如果该次延迟还没有完成,那么忽略接下来该函数的请求。也就是说会忽略掉很多函数请求。
分时函数处理的问题是用户主动调用的,比如插入千百个节点
var arr = []; for (var i = 1; i <= 1000; i++) { arr.push(i) //假设arr装载了100个好友数据 } var renderFriendList = function(data) { for (var i = 0, l = data.length; i < l; i++) { var div = document.createElement('div'); div.innerHTML = i; document.body.appendChild(div) } } renderFriendList(arr)
分时函数的原理是让创建节点的工作分批进行,比如把1s创建1000个节点,改为每200ms创建8个节点(其实就是一种异步函数的思想)
var timeChunk = function(arr, fn, count) { var obj, t; var len = arr.length; var start = function() { for (var i = 0; i < Math.min(count || 1, arr.length); i++) { var obj = arr.shift(); fn(obj) } }; return function() { t = setInterval(function() { if (arr.length === 0) { return clearInterval(t); } start() }, 200) } } var renderFriendList = timeChunk(arr, function(n) { var div = document.createElement('div'); div.innerHTML = n; document.body.appendChild(div) }, 8) renderFriendList();
相关文章推荐
- js性能优化之函数缓存
- js性能优化之函数节流
- web性能优化之- js自定义函数延迟执行 jquery插件
- JS性能优化 -- 函数节流
- javascript性能优化之分时函数的介绍
- js性能优化之惰性加载函数
- js性能优化之函数节流(分流函数)
- 如何优化JQuery each()函数的性能
- JS中的关于类型转换的性能优化
- JS中的关于类型转换的性能优化
- 我所经历的JS性能优化(转)
- js 性能 优化 提高JS性能注意事项
- 经常使用JS,可知ExtJs性能优化
- trim原型函数看js正则表达式的性能
- js性能优化-事件委托
- 让js编程跟上浏览器改朝换代--性能优化
- JS性能优化框架
- 使用SQL Server 扩展函数进行性能优化
- JS性能优化框架
- js 优化次数过多的循环 考虑到性能问题