lockable JS function,解锁操作之前,不能重复操作
Posted 大胡子毛绒老头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
以上是关于lockable JS function,解锁操作之前,不能重复操作的主要内容,如果未能解决你的问题,请参考以下文章
50-Jenkins-Lockable Resources插件实现资源锁定
使用 rollup 打包一个原生 js + canvas 实现的移动端手势解锁功能组件