我在孩子王的第二次分享

我在公司的第二次分享。分享前端一些基础知识;分享 node + express 做接口封装;分享 vue + typeScript 的实践。

浏览器兼容性

1
2
3
4
5
6
7
[
"> 1%",
"last 3 versions",
"ie >= 9",
"ios >= 8",
"android >= 4.4"
]

防抖和节流

防抖和节流

防抖 debounce

lodash.debounce

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const debounce = function(func, wait, immediate) {
// immediate 默认为 false
var timeout, args, context, timestamp, result;

var later = function () {
// 当 wait 指定的时间间隔期间多次调用 debounce 返回的函数,则会不断更新 timestamp 的值,导致 last < wait && last >= 0 一直为 true,从而不断启动新的计时器延时执行 func
var last = +new Date() - timestamp;

if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
if (!timeout) context = args = null;
}
}
};

return function() {
context = this;
args = arguments;
timestamp = +new Date();
// 第一次调用该方法时,且immediate为true,则调用func函数
var callNow = immediate && !timeout;
// 在wait指定的时间间隔内首次调用该方法,则启动计时器定时调用func函数
if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
context = args = null;
}

return result;
};
}

节流 throttle

H5网页基础

zhouyu1993 wechat
扫一扫上面的二维码,奇妙的世界等着你!
坚持技术分享,您的支持将鼓励我!