zoukankan      html  css  js  c++  java
  • 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);
        });
    };
  • 相关阅读:
    22.json&pickle&shelve
    22.BASE_DIR,os,sys
    21.time和random
    21.模块的执行以及__name__
    21.python的模块(Module)和包(Package)
    21. 对文件进行查询修改等操作
    20.装饰器和函数闭包
    19.python基础试题(三)
    19.生产者消费者模型
    19.yield和send的区别
  • 原文地址:https://www.cnblogs.com/xiankui/p/3783817.html
Copyright © 2011-2022 走看看