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);
 
时间: 2024-08-18 11:43:14

lockable JS function,解锁操作之前,不能重复操作的相关文章

js数组的操作

转载 js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限

js子窗口操作父窗口的标签

======================================父窗体 <input id="aaaa" type="button"/> function upfile()         {                         resultValue = window.showModelessDialog("ceshi.aspx?file=DownFile", window, "dialogWidt

js 文件的操作

js 文件的操作(ActiveXObject仅支持IE) 一.参数解释: 1. filename: filename //文件路径 2.iomode: var forReading=1;只读var forWriting =2;//写var forAppending=8;//追加 3.create: true//创建: false//不创建 4.format: var tristateFalse=0;//以ASCII格式打开(默认) va tristateTrue=-1;//以Unicode格式打

js数组的操作。好难,自己学习下。

js数组的操作 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

JS封装cookie操作函数实例(设置、读取、删除)

本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /*设置cookie*/ function setCookie(name, value, iDay) {   var oDate=new Date();   oDate.setDate(oDate.getDate()+iDay);   document.cook

js数组的操作及数组与字符串的相互转化

数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/(.)(?=[^$])/g,"$1,").split(",");       //字符串转化为数组 var obj2 = "new2abcdefg".split("");                              

js中select操作实例

window.onload=function(){ //创建select var select1= document.createElement("select"); select1.id="select1"; for(var i=0;i<5;i++){ //创建option var option=document.createElement("option"); //var option=new option(); option.valu

js数组的操作 Full

js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度