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,解锁操作之前,不能重复操作的更多相关文章
- js实现动态操作table
本章案例为通过js,动态操作table,实现在单页面进行增删改查的操作. 简要案例如下: <%@ page language="java" contentType=&quo ...
- nw.js如何处理拖放操作
nw.js如何处理拖放操作 其实拖放(drag-drop)操作是Html5的功能,不是nw.js的内置API,那么我们采用Html5应用一般的处理方法就可以了. 首先我们看一下一个正常的页面,直接拖放 ...
- JS实现 键盘操作
JS实现 键盘操作: 详情可以去其逛网查看其API并下载,地址:http://craig.is/killing/mice <!DOCTYPE html PUBLIC "-//W3C// ...
- js数组的操作及数组与字符串的相互转化
数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...
- 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 ...
- touch.js——常见应用操作
touch.js--常见应用操作 基本事件: touchstart //手指刚接触屏幕时触发 touchmove //手指在屏幕上移动时触发 touchend //手指从屏幕上移开时 ...
- JS 的骚操作
一.强制类型转换 1.1string强制转换为数字 //可以用*1来转化为数字((实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为NaN,或者使用 a !== a 来判 ...
- js之数组操作
js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...
- [转]Node.JS使用Sequelize操作MySQL
Sequelize官方文档 https://sequelize.readthedocs.io/en/latest/ 本文转自:https://www.jianshu.com/p/797e10fe23 ...
随机推荐
- python之dict(或对象)与json之间的互相转化
在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作. 在Python中自带json库.通过import json导入. 在json模块有2个方法, loads():将 ...
- httpd 处理模型
prefork 一个请求用一个进程响应 worker 一个请求用一个线程响应(启动多个进程,多个进程生成多个线程) event 一个进程,处理多个请求
- 最简单的 react-router4 的安装和使用
React-Router 的安装 npm install react-router React-Router提供了两个组件:Router和Route.下面看最简单的例子: src/Routes.js ...
- Dev TreeList 某一列进行格式化显示
private void treeList1_GetNodeDisplayValue(object sender, GetNodeDisplayValueEventArgs e) { ...
- [20180603]Python读写csv
原文:https://docs.python.org/3/library/csv.html 进入python官网后,选择document,然后选择library reference. 读取: impo ...
- Vue 中如何引入第三方 JS 库
一绝对路径直接引入全局可用 二绝对路径直接引入配置后import 引入后再使用 三webpack中配置 aliasimport 引入后再使用 四webpack 中配置 plugins无需 import ...
- 【vue】清理代码
// 一次性将这个日期选择器附加到一个输入框上 // 它会被挂载到 DOM 上. mounted: function () { // Pikaday 是一个第三方日期选择器的库 this.picker ...
- Java处理对象
1.打印对象和toString 方法 toString() 方法是Object 类的一个实例方法,所有的Java类都是Object类的子类,因此所有的Java对象都是具有toString()方 ...
- 【js】关于this指针-理解call、apply、bind
首次讲解视频,听了一下,录音声音太小(暂不知道该怎么调节),老是咳咳,不太流畅.暂时不理想,日后继续努力.(能写出来还不够,还要会说出来) 首先,this指针只存在于函数(function)中.用于指 ...
- python操作MongoDB、MySQL、Postgres、Sqlite、redis实例
总结:除了MongoDB.redis,其他三个数据库用python来操作其实是差不多的.所有例子都很简单,实际生产环境中的数据库操作远比这复杂得多,命令也比我例子中的多得多,我这里高级一点的用法就是批 ...