1 Star 0 Fork 0

foxpocker/lodash-learn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
debounce.js 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
foxpocker 提交于 2018-10-14 22:44 . update
// 函数去抖
// 短时间内多次触发函数调用时
// 函数在**两次调用时间差达到规定的时间**时执行一次
// **两次调用时间差小于规定时间**时不执行函数
// 使用场景
// 1. 在`window.resize`时,不希望多次触发事件,以免影响性能,可以使用debounce函数
// 2. 在`autosearch`时, 也不希望每次删除或者输入时都search, 可以使用debounce处理
// 一个debounce的简单实现
/**
* @param {number} idle 空闲时间,单位毫秒
* @param {function} action 请求关联函数,实际应用需要调用的函数
* @return {function} 返回客户调用函数
*/
// var debounce = function (idle, action) {
// var last
// return function () {
// var ctx = this
// var args = arguments
// clearTimeout(last)
// last = setTimeout(function () {
// action.apply(ctx, args)
// }, idle)
// }
// }
// 参考文档
// http://www.cnblogs.com/fsjohnhuang/p/4147810.html
let { debounce } = require('lodash')
let moment = require('moment')
function trigger (fn, time = 10) {
return setInterval(fn, time)
}
function test () {
console.log(`i am here, 现在是:${moment().format('HH:mm ss')}`)
}
let tested = debounce(test, 1000, {
// leading: false
// maxWait: 2000 // 最大空闲时间,即超过这个时间后,函数必须执行一次
})
let timer = trigger(tested)
console.log('开始执行trigger')
console.log(`开始执行时间:${moment().format('HH:mm ss')}`)
setTimeout(() => {
console.log('停止执行trigger')
console.log(`停止执行时间:${moment().format('HH:mm ss')}`)
timer && clearInterval(timer)
}, 3000)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cwy7/lodash-learn.git
git@gitee.com:cwy7/lodash-learn.git
cwy7
lodash-learn
lodash-learn
master

搜索帮助