美文网首页
extjs解决连点问题的方法

extjs解决连点问题的方法

作者: jumplee | 来源:发表于2020-09-23 18:01 被阅读0次

    其实Extjs的Function对象里有大量的函数,比如createBuffered,createThrottled等高级函数,帮助你解决一下函数问题。但是createBuffered比较奇怪,第一次执行有一定的时间差,这对于事件注册来说,不能接受。而看过createBuffered代码后,发现无法解决,因为里面使用的是setTimeout。
    createBuffered的执行顺序
    ----buffer----fn----buffer----fn----
    debounce的执行顺序
    fn----buffer----fn----buffer----

    //  类似debounce,但是有默认延迟,修改一下
            Ext.Function.debounce=function(fn, buffer, scope, args) {
                var beforeTime=0;
                return function() {
                    var callArgs = args || Array.prototype.slice.call(arguments, 0),
                        me = scope || this;
                    // 不是第一次执行
                    if (beforeTime) {
                        var now=(new Date()).getTime();
                        if(now-beforeTime>buffer){
                            fn.apply(me, callArgs);
                            console.log('larger than now');
                            beforeTime=now;
                        }
    
                    }else{
                        fn.apply(me, callArgs);
                        console.log('first');
                        beforeTime=(new Date()).getTime();
                    }
                };
            };
    

    使用:在controller中使用

    onClick: Ext.Function.debounce(function(){
      alert('click');
    },500)
    
    

    相关文章

      网友评论

          本文标题:extjs解决连点问题的方法

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