js setTimeout 实现稀释技巧

示例的源码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript"></script>
</head>
<body style="height: 300px;background: green;">
<script>
var f = '';
var num = 0;
$('body').click(function(argument) {
if(f){
clearTimeout(f);
}
f = setTimeout(function(argument) {
num++;
console.log(num);
},800)
})
</script>
</body>
</html>

在浏览器中打断点后的分析总结:

首次点击 if 为false 会在下面的函数执行中生成一个 setTimeout 事件 , 在 800ms 内再次点击 if 为 true 会清除掉上次生成的 setTimeout 事件 , 往下面执行时又重新生成一个新的 setTimeout 事件, 所以在 800ms 内连续点击只会执行最后一次点击的事件,所以便完成了稀释的效果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,286评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 8,072评论 2 17
  • 原文链接:http://www.jianshu.com/p/2a9367afe9e7 1510997059(1)....
    悬笔e绝阅读 5,664评论 0 0
  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,474评论 0 5
  • 最近最让大家提心吊胆的莫过于购房政策与房价的起伏,据说全国已经有20多座城市的房价已经到了疯涨的状态,如同运动员吃...
    大叔有文化阅读 311评论 0 0

友情链接更多精彩内容