首页 > Web开发 > 详细

lockable JS function,解锁操作之前,不能重复操作

时间:2017-09-26 18:18:51      阅读:244      评论:0      收藏:0      [点我收藏+]
        (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);
 

 

lockable JS function,解锁操作之前,不能重复操作

原文:http://www.cnblogs.com/ly45/p/7598053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!