• js防抖和节流


    在进行窗口的resize、scroll,输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常糟糕。此时我们可以采用debounce(防抖)和throttle(节流)的方式来减少调用频率,同时又不影响实际效果。

    一、防抖

            // 防抖:短时间连续触发时,时间期限内函数只执行一次(常用场景:滚动加载)
            /**
             * 1.不立即执行
             * 2.短时间连续触发不执行
            */
            function debounce(func, ms = 1000) {
                let timer;
                return function (...args) {
                    if (timer) {
                        clearTimeout(timer)
                    }
                    // 执行的是最后一次
                    timer = setTimeout(() => {
                        func.apply(this, args)
                    }, ms)
                }
            }
            // 测试
            const task = () => { console.log('run task') }
            const debounceTask = debounce(task, 1000)
            window.addEventListener('scroll', debounceTask)

    二、节流

            // 节流:时间期限内函数只会执行一次(常用场景:防重复点击)
            function throttle(func, ms = 1000) {
                let canRun = true
                return function (...args) {
                    if (!canRun) return
                    canRun = false
                    // 执行的是第一次
                    setTimeout(() => {
                        func.apply(this, args)
                        canRun = true
                    }, ms)
                }
            }
    
            // 测试
            const task = () => { console.log('run task') }
            const throttleTask = throttle(task, 1000)
            window.addEventListener('scroll', throttleTask)
  • 相关阅读:
    存储过程和触发器
    RuPengWang项目
    短信验证
    Lucene.Net 站内搜索
    Quartz 定时任务(含Redis)
    网上支付(支付宝/银联)
    iOS 图片选择的路径处理(转)
    iOS 使用cocoaPods总结 ----摩天居士博客
    iOS 开发之本地化 国际化
    iOS 8 Xcode6 设置Launch Image 启动图片<转>
  • 原文地址:https://www.cnblogs.com/jing-zhe/p/14200644.html
Copyright © 2020-2023  润新知