立即执行:即多次触发事件,第一次会立即执行函数,之后在设定wait事件内触犯的事件无效,不会执行。

非立即执行函数: 多次触发事件,只会在最后一次触发事件后等待设定的wait时间结束时执行一次。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body></body>
<script>/**
* @desc 函数防抖---“立即执行版本” 和 “非立即执行版本” 的组合版本
* @param func 需要执行的函数
* @param wait 延迟执行时间(毫秒)
* @param immediate---true 表立即执行,false 表非立即执行
**/function debounce(func, wait, immediate) {let timer;return function () {//this指向debouncelet context = this;//即参数,func,waitlet args = arguments;//如果timer不为null, 清除定时器if (timer) clearTimeout(timer);//如果是立即执行if (immediate) {//定义callNow = !timervar callNow = !timer;//定义wait时间后把timer变为null//即在wait时间之后事件才会有效timer = setTimeout(() => {timer = null;}, wait)//如果callNow为true,即原本timer为null//那么执行func函数if (callNow) func.apply(context, args)} else {//如果是不立即执行//那就是每次重新定时timer = setTimeout(function () {func.apply(context, args)}, wait);}}}function handle() {console.log(Math.random());}window.addEventListener("mousemove",debounce(handle,1000,true)); // 调用立即执行版本// window.addEventListener("mousemove", debounce(handle, 1000, false)); // 调用非立即执行版本
</script></html>

js防抖立即执行和非立即执行的理解相关推荐

  1. js代码-防抖函数(立即执行和非立即执行)

    防抖 即执行function debounce(fn, delay) {let timeid=null, flag = true;return function () {clearTimeout(ti ...

  2. lisp如何调用linux头文件,Lisp之 程序的交互执行和非交互执行

    学习Lisp也有一段时间了,基本在打基础,学习基本的语法,但是一直也没写个程序玩玩,当然了Helloworld 这种程序是不算了.今天写了个稍复杂的程序,运行了下,感觉不错. 我在我的Ubuntu上装 ...

  3. js防抖、节流(立即执行/非立即执行 + 立即取消等待)

    文章目录 一.防抖(立即执行/非立即执行 + 立即取消等待) 1.1 非立即执行版 1.2 立即执行版 1.3 合并版 1.4 合并版 + 立即取消等待 二.节流(立即执行/非立即执行 + 立即取消等 ...

  4. 学JS的心路历程 -非同步执行

    JS是单线程的语言,也就是说同一时间只会执行一行程序,所以如果一段程序执行过久就会造成阻塞(blocking)的现象,必须等到它结束后才能执行下一段程序. 举个例子来说,如果我们今天要买便当,但是老板 ...

  5. 防抖和节流函数详解(立即执行/非立即执行)

    在线查看效果移动鼠标触发 1.防抖(立即执行/非立即执行) 什么是防抖:一个事件在触发后,设置定时器,若n秒内该事件没有再次发生,那么执行这个函数,如果n秒内该事件再次发生了,那么定时器重新开始计时. ...

  6. php proc open 返回,PHP用proc_open新建子进程使用管道通信非阻塞执行PHP脚本

    PHP用proc_open新建子进程使用管道通信非阻塞执行PHP脚本. 脚本结束时register_shutdown_function回调函数访问管道获取子进程输出的数据. 例子1(popen): f ...

  7. shell sqlplus执行sql文_各主流数据库非交互执行

    声明:    文章初衷仅为攻防研究学习交流之用,严禁利用相关技术去从事一切未经合法授权的入侵攻击破坏活动,因此所产生的一切不良后果与本文作者及该公众号无任何关联    另外,这只是一个个人性质的公众号 ...

  8. iOS NSOperation 非并发执行

    NSOperation提供了一种面向对象的方法来封装任务.NSOperation可以单独执行,也可以放到NSOperationQueue中执行. NSOperation是虚基类不能直接使用,但Coco ...

  9. int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件...

    int.TryParse非预期执行引发的思考 问题出现 这天在写一个页面,想谨慎些就用了int.TryParse,结果出问题了. 代码如下: Copy int id = 1000; //Request ...

最新文章

  1. 40_pytorch Batch Norm
  2. java if在内存中_java如何将对象暂存到内存中?
  3. Android中http断点下载,Android HttpURLConnection断点下载(单线程)
  4. 基于sklearn的LogisticRegression二分类实践
  5. 从React 编程到好莱坞
  6. 微软软件推送服务器,微软将通过系统更新功能向大部分用户推送新版Microsoft Edge浏览器-...
  7. cmake安装mysql
  8. QCA9377驱动调试
  9. PT100/PT1000热电阻值计算
  10. 为什么俺推荐Python「1」:作为脚本语言的Python
  11. 华硕raid 0 安装linux,ROG Maxius IX主板技巧篇:组建RAID 0
  12. error: system libzip must be upgraded to version #62= 0.11【问题解决】php7编译zip报错
  13. C++操作题-定义并实现一个银行类(Bank)
  14. 牛顿--现在流行胡诌
  15. 惯性导航(IMU)误差分析
  16. Photoshop快速切图技巧
  17. 域名防红监测软件实现方案
  18. 关于hcaptcha (vm wasm ob)三合一
  19. 对脚手架的使用的几点建议
  20. 在灰度图像上进行Mean Shift迭代搜索目标 ,一维加权直方图 + 巴氏系数 + Mean Shift迭代

热门文章

  1. 使用squid代理时出现 The requested URL could not be retrieved
  2. STL中vector、list、deque和map的区别
  3. Java递归中不死神兔问题
  4. Tushare 注册、更新与数据获取
  5. android 地图相册,android开发实现view转bitmap保存到手机相册
  6. 072.火车车厢重排
  7. python的5种高级用法,效率提高没毛病!
  8. 优秀课件笔记旅游资源和旅游地评价 Evaluation of Tourism Resources 3
  9. [转]UML类图中连接线与箭头的含义
  10. wramp php 命令,Linux环境的AMP安装 PHP安装