之前写过节流函数和防抖函数,今天来个分时函数.
分时函数
为了避免一下子执行太多的任务,我们把一个任务分为N个阶段,然后每隔一段时间执行一些任务,减轻压力.比如我们要创建10000个div.我们可以分几批创建,每次创建一定的个数.
下面是代码实现
var timeChunk = function(dataArray, fn, count) {
var __self = fn,
ary = dataArray,
count = count,
timer;
// 创建一个执行的函数
var start = function() {
for(var i = 0; i < Math.min(count || 1, ary.length); i++) {
var obj = ary.shift(); // 获取第一个参数
__self(obj)
}
}
return function() {
timer = setInterval(function() {
if(ary.length === 0) {
clearInterval(timer); // 清除时间循环
}
start(); // 执行
}, 200)
}
}
上面就是分时函数,其中参数dataArray, fn, count分别是我们要操作的对象数组,要调用的函数,要处理的对象数组的长度.