-_-#【Better Code】throttle / debounce
javascript函数的throttle和debounce
throttle 疯狂触发事件,固定步调执行
debounce 疯狂触发事件,不会执行
var resizeTimer = null
window.onresize = function() {
if (resizeTimer) {
clearTimeout(resizeTimer)
}
resizeTimer = setTimeout(function() {
console.log(1)
}, 500)
}
var debounce = function(func, threshold, execAsap) {
var timeout
return function debounced() {
var obj = this
var args = arguments
function delayed() {
if (!execAsap) {
func.apply(obj, args)
}
timeout = null
}
if (timeout) { // 时间少于threshold timeout一直clearTimeout 不会执行delayed
clearTimeout(timeout)
} else if (execAsap) { // 直接执行还是延迟执行
func.apply(obj, args)
}
timeout = setTimeout(delayed, threshold || 100)
}
} window.onresize = debounce(function() {
console.log(1)
}, 200, true)
-_-#【Better Code】throttle / debounce的更多相关文章
- -_-#【Better Code】
i++ 与 ++i 的性能区别 if (true) { console.log('hi') } if (!false) { console.log('hi~') } true && c ...
- -_-#【Better Code】字符串匹配
提高 web 应用性能之 JavaScript 性能调优
- 【Leet Code】Palindrome Number
Palindrome Number Total Accepted: 19369 Total Submissions: 66673My Submissions Determine whether an ...
- 【转】【VS Code】配置文件Launch及快捷键
Ctrl+shift+p,然后输入launch,点击第一个选项即可配置. 之后选择More即可 具体配置可修改为: { "version": "0.2.0", ...
- 【Gray Code】cpp
题目: The gray code is a binary numeral system where two successive values differ in only one bit. Giv ...
- 【繁星Code】如何在EF将实体注释写入数据库中
最近在项目中需要把各个字段的释义写到数据库中,该项目已经上线很长时间了,数据库中的字段没有上千也有上百个,要是一个项目一个项目打开然后再去找对应字段查看什么意思,估计要到明年过年了.由于项目中使用En ...
- 【Better Code】repeat
<JavaScript 框架设计> 版本1: function repeat(target, n) { return (new Array(n + 1)).join(target) } 版 ...
- -_-#【网站优化】AJAX
如何让搜索引擎抓取AJAX内容? Ajax 缓存: 两个重要的事实 使用 AJAX 事件触发 AJAX 请求.不要产生多次请求. 对 AJAX 请求使用 GET 方法 Use GET for AJAX ...
- -_-#【CSS 优化】
高性能CSS 关于css通配符性能问题不完全测试 CSS的渲染效率 border: none; /* 不写 border: 0; 但几乎都是写 border: 0;的.. */ 不要使用过小的图片做背 ...
随机推荐
- JS1-属性操作
属性操作语法 读操作:获取.找到 元素.属性名 写操作:“添加”.替换.修改 元素.属性名 = 新的值 元素.innerHTML => 读取元素里面所有的html代码 元素.innerHTML ...
- css3遇到的一些属性
rgba 是由red.green.blue 三种颜色搭配出来的box-shadow 向元素添加阴影层,水平阴影位置,垂直阴影位置,后面是可选:模糊距离,阴影大小,颜色,是否是 ...
- [IO] C# DirFileHelper文件与文件夹操作类教程与源码下载 (转载)
点击下载 DirFileHelper.zip 主要功能如下所示 // 摘要: // 向文本文件的尾部追加内容 // // 参数: // filePath: // 文件的绝对路径 // // conte ...
- Android学习之旅:五子棋
在学完了Android的基础之后,我开始尝试着写一些小项目练练手,同时进一步巩固自己的基础知识,而我选的的第一个项目就是做一个简单的人人对战的五子棋小游戏. 首先,我们要新建一个自定义控件类Panel ...
- MVP快速开发框架
所谓MVP(Model-View-Presenter)模式.是将APP的结构分为三层: view - UI显示层 view 层主要负责: 提供UI交互 在presenter的控制下修改UI. 将业务事 ...
- C#转Python计划
1.学习python语法,完成python_cookbook上的代码. 目标:熟悉python语法和开发习惯,以及调试方法. 2.学习使用Django框架,完成一个基于Django框架的项目,发布到g ...
- Java基础--Java内存管理与垃圾回收
Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} publ ...
- 创业 CEO:如何选择投资人
欢迎来到「创业 CEO」系列,在这个系列中,我们讨论一个创业者如何教会自己成为一位伟大的 CEO,因为历史上最伟大的创业公司,往往都是由这样的人在领导. AppWorks 成立至今,总共参与投资了 2 ...
- 读书笔记之 - javascript 设计模式 - 享元模式
本章探讨另一种优化模式-享元模式,它最适合于解决因创建大量类似对象而累及性能的问题.这种模式在javascript中尤其有用,因为复杂的javascript代码很快就会用光浏览器的所有可用内存,通过把 ...
- NoSql之Redis使用(一)
一.安装 1.下载安装包: 官方网站:redis.io 官方推荐windows版本:https://github.com/MSOpenTech/redis 2:下载压缩包,解压后如下 redis-se ...