js只执行1次的函数示例


Posted in Javascript onJuly 20, 2016

在我们日常开发的时候,经常会碰到一种这样的情况:想让某个函数只执行一次,特别是在一些循环或定时执行的时候。

废话不多说,直接上代码:

function runOnce(fn, context) { //控制让函数只触发一次
  return function () {
    try {
      fn.apply(context || this, arguments);
    }
    catch (e) {
      console.error(e);//一般可以注释掉这行
    }
    finally {
      fn = null;
    }
  }
}
 
// Usage 1:
var a = 0;
var canOnlyFireOnce = runOnce(function () {
  a++;
  console.log(a);
});
 
canOnlyFireOnce(); //1
canOnlyFireOnce(); // nothing
canOnlyFireOnce(); // nothing
 
// Usage 2:
var name = "张三";
var canOnlyFireOnce = runOnce(function () {
  console.log("你好" + this.name);
});
canOnlyFireOnce(); //你好张三
canOnlyFireOnce(); // nothing
 
// Usage 3:
var obj = {name: "天涯孤雁", age: 24};
var canOnlyFireOnce = runOnce(function () {
  console.log("你好" + this.name);
}, obj);
canOnlyFireOnce(); //你好天涯孤雁
canOnlyFireOnce(); // nothing

因为返回函数执行一次后,fn = null将其设置未null,所以后面就不会执行了。再贴一个网上别人分享的代码,道理一样的:

function once(fn, context) { 
  var result;
 
  return function() { 
    if(fn) {
      result = fn.apply(context || this, arguments);
      fn = null;
    }
 
    return result;
  };
}
 
// Usage
var canOnlyFireOnce = once(function() {
  console.log('Fired!');
});
 
canOnlyFireOnce(); // "Fired!"
canOnlyFireOnce(); // nothing

以上就是为大家整理让javascript只执行一次的函数示例,有需要的可以参考。

Javascript 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
javascript 检测浏览器类型和版本的代码
Sep 15 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
jqgrid 简单学习笔记
May 03 Javascript
js导出txt示例代码
Jan 14 Javascript
修复bash漏洞的shell脚本分享
Dec 31 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
ES6中Array.copyWithin()函数的用法实例详解
Sep 16 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 Javascript
js实现AI五子棋人机大战
May 28 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
JQuery为元素添加样式的实现方法
Jul 20 #Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 #Javascript
javaScript给元素添加多个class的简单实现
Jul 20 #Javascript
JavaScript中数组的22种方法必学(推荐)
Jul 20 #Javascript
JavaScript DOM 对象深入了解
Jul 20 #Javascript
JavaScript中的splice方法用法详解
Jul 20 #Javascript
Bootstrap被封装的弹层
Jul 20 #Javascript
You might like
php对称加密算法示例
2014/05/07 PHP
php实用代码片段整理
2016/11/12 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
简单的php购物车代码
2020/06/05 PHP
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python实现二维数组的对角线遍历
2019/03/02 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
高二美术教学反思
2014/01/14 职场文书
公司拓展活动方案
2014/02/13 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
开场白怎么写
2015/06/01 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
写好Python代码的几条重要技巧
2021/05/21 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS