JavaScript高级程序设计之函数性能

setTimeout 比 setInterval 性能更好

// 取代setInterval
setTimeout(function self () {
    
    // code goes here

    setTimeout(self, interval);
}, interval);

对异步执行的大数组的分割执行

// 大块、异步数组的处理
function chunk(arr, process, context) {
    setTimeout(function self() {

        var item = arr.shift();
        process.call(context, item);

        if (arr.length > 0) {
            setTimeout(self, 100)
        }
    }, 100)
}

var arr = ["123", "456", "789", "123", "456", "789", "123", "456", "789"],
    process = function (item) {
        console.log(item);
    };

// arr.concat() 返回arr数组的一个副本;否则chunk后arr成为了空数组
chunk(arr.concat(), process);

函数节流

// 函数节流,某些代码没必要没有间断的连续重复执行,如winddow.onresize = function(){ throttle(fn); }
function throttle(method, context) {
    clearTimeout(method.tId);

    method.tId = setTimeout(function () {
        method.call(context)
    }, 100)
}

window.onscroll = function () {
    throttle(function () {
        console.log(document.documentElement.scrollTop);
    });
};

 

JavaScript高级程序设计之函数性能,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。