高性能Javascript 分割任务学习笔记
分割任務(wù) ? Spliting Up Tasks ? ?數(shù)組處理方式
函數(shù)運(yùn)行時(shí)間過長(Javascript最長運(yùn)行時(shí)間為100毫秒,我們應(yīng)該減半處理,為50),可以切割為一系列的小函數(shù)。放入數(shù)組中,用setTimeout來處理.
每行代碼都可以看成是一個(gè)原子任務(wù),按功能組合一些代碼,都形成一個(gè)任務(wù)函數(shù)。
代碼
function saveDocument(id) {
openDocument(id);
writeText(id);
closeDocument(id);
updateUI(id);
}
切割任務(wù)的數(shù)組處理方式
function saveDocument(id) {
var tasks = [openDocument,writeText,closeDocument,updateUI];
setTimeout(function(){
var task = tasks.shift();
task(id);
if(tasks.length > 0) {
setTimeout(arguments.callee,25);
}
?? ? ?},25);
}
函數(shù)封裝
function multistep(steps,args,callback) {
var tasks = steps.concat();
setTimeout(function(){
var task = tasks.shift();
task.apply(null,args || []);
if(tasks.length > 0) {
setTimeout(arguments.callee,25);
} else {
callback();
}
},25);
}
使用此函數(shù)的前提條件:
任務(wù)可以異步處理面不影響用戶體驗(yàn)或造成相關(guān)代碼錯(cuò)誤.
轉(zhuǎn)載于:https://www.cnblogs.com/yushunwu/archive/2011/09/24/2188354.html
總結(jié)
以上是生活随笔為你收集整理的高性能Javascript 分割任务学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: the content of the a
- 下一篇: 《Effective Java》 第一讲