zoukankan      html  css  js  c++  java
  • lockable JS function,解锁操作之前,不能重复操作

            (function () {
                var ed = [];
                window.Lockable = function (lockF, options) {
                    if (!arguments.length) {
                        var caller = arguments.callee.caller;
                        if (ed.indexOf(caller) === -1) {
                            ed.push(caller);
                            caller.unlock = function () {
                                ed.splice(ed.indexOf(caller), 1);
                            };
                            return;
                        }
                        return true;
                    }
                    var empty = function () { },
                        on = options && options.on || empty,
                        off = options && options.off || empty,
                        repeat = options && options.repeat || empty,
                        ing,
                        ri = 1;
                    if (typeof options === "function") {
                        off = options;
                    }
                    var f = function () {
                        "use strick"
                        if (ing) {
                            repeat(ri++);
                            return;
                        }
                        if (on()) {
                            ing = false;
                            return;
                        }
                        var r = lockF.apply(this, arguments);
                        if (typeof r === "undefined") {
                            ing = true;
                        } else {
                            ing = !!r;
                        }
                    };
                    f.unlock = function () {
                        ing = false;
                        off.apply(arguments);
                    };
                    return f;
                }
            })();

    使用方法:

    var functionName = Lockable(function(){
      //needs long time.
      functionName.unlock();
    });
    
    setInterval(functionName, 111);

    或者:

    function fn(){
        if(Lockable()) {
            return;
        }
        //needs long time
        fn.unlock();
    }
    setInterval(fn, 111);
     
  • 相关阅读:
    微信小程序左右滚动公告栏效果
    返回当前页面title、url等操作
    打开URL操作
    打开浏览器操作
    Java for selenium(webdriver) 环境搭建
    HTMLTestRunner 自动化测试报告
    Python特殊语法:filter、map、reduce、lambda [转]
    抽象类
    __str__
    WebTable 扩展
  • 原文地址:https://www.cnblogs.com/ly45/p/7598053.html
Copyright © 2011-2022 走看看