代码拉取完成,页面将自动刷新
// 函数去抖
// 短时间内多次触发函数调用时
// 函数在**两次调用时间差达到规定的时间**时执行一次
// **两次调用时间差小于规定时间**时不执行函数
// 使用场景
// 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)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。