美文网首页
【javascript】回调函数的使用

【javascript】回调函数的使用

作者: 老夫当年也是神一般的少年 | 来源:发表于2017-07-17 11:52 被阅读0次

    现在有这样一个场景,需要对100000个节点进行检索与修改操作,先来看看检索与修改操作耦合的情况:

    /* 不好的编程方式 */
    var findNodes = function(){
        var i = 100000,
            nodes = [],
            found = document.getElementById("found");
        while(i){
            i -= 1;
            //这里是复杂的逻辑
            nodes.push(found);
        }
        return nodes;
    };
    var hide = function(nodes){
        var i = 0,
            max = nodes.length;
        for(; i<max; i+=1){
            nodes[i].style.display = "none";
        }
    };
    //执行,让每个节点隐藏
    hide(findNodes());  //低效,应为hide需要再次遍历
    

    可以看到,上述的编码是不优雅的,主要有两点:一是搜索与修改的业务逻辑耦合,不能当做一个通用函数使用;二是在hide函数里又再一次进行了遍历,效率低下;

    那么针对这两点,我们可以使用回调函数来做下优化:

    var findNodesc = function(callback){
        var i = 100000,
            nodes = [],
            found = document.getElementById("found");
        //检查回调函数是否为可调用的
        if(typeof callback !== "function"){
            callback = false;
        }
        while(i){
            i -= 1;
            //这里是复杂的逻辑
            if(callback){
                callback(found);
            }
            nodes.push(found);
        }
        return nodes;
    }
    var hides = function(node){
        node.style.display = "none";
    }
    findNodesc(hides);  //找到节点并隐藏
    

    以上,由第一种方法产生的问题完美解决。

    相关文章

      网友评论

          本文标题:【javascript】回调函数的使用

          本文链接:https://www.haomeiwen.com/subject/wbufkxtx.html