在某些时候,需要手动的向表格中插入数据或删除数据。 如果是处理大批量的数据,在执行js代码的时候,效率会很低,造成页面卡死的现象。因此要在js中使用分片技术,利用settimiout方法,间隔的去执行,避免造成浏览器卡死。
相关的示例代码:
在某一段代码中调用:
var rows = gridData.rows;
chunkAdd(rows,addOneRow);
rows就是包含要插入到另一个表格中的数据的数组。addOneRow是具体处理逻辑的方法。
chunkAdd方法定义如下:
/**分片执行,避免长时间占据浏览器内存造成的卡死现象
* array是要处理的数组,process是要执行的方法
* @param treeNode
* @return
*/
function chunkAdd(array,process){
var i=0 ;
var arrLength = array.length;
setTimeout(function() {
process(array[i]);
i++;
if(i<arrLength){
setTimeout(arguments.callee,50)
}
},50);
}
这个方法,50毫秒运行一次,在运行间隙将控制权返回给浏览器,避免了浏览器卡死。
addOneRow 方法就是处理具体的逻辑了,定义如下:
function addOneRow(row){
if(row!=null){
$('#selectedGridTable').datagrid('insertRow',{row: row});
}
}