zoukankan      html  css  js  c++  java
  • 前端:性能优化之防抖与节流

    前言:防抖和节流是前端应用开发中常见的两个功能,其原理都是利用闭包,缓存延迟时间。常用于窗口的resize、scroll、输入框内容校验等操作

    防抖(debounce)

    在函数需要频繁触发时,只有当有足够空闲的时间时,才执行一次。

    比如说我们在使用百度、360浏览器搜索时,每次输入之后都有联想词弹出,
    这个控制联想词的方法不可能是输入框内容一改变就触发的,
    他一定是当你结束输入一段时间之后才会触发。
    let timer input.on(
    'input', () => { clearTimeout(timer) // 停止输入 500 毫秒后开始搜索 timer = setTimeout(() => { // 搜索 }, 500) })

    节流(thorttle)

    预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。

     我们平时在淘宝抢购某一件限量热卖商品时,你不断点刷新点购买,你会发现你点击的时候总有一阵时间它没反应,
    这里就应用到了节流,这是因为怕点的太快导致服务器或者系统崩溃。
    1
    let isClick = false 2 button.on('click', () => { 3 if (isClick) return 4 isClick = true 5 // 其他代码。。。 6 // 每 10 秒只允许点击一次 7 setTimeout(() => { 8 isClick = false 9 }, 10000) 10 })

    防抖与节流之间的区别

    在发生持续触发事件时,

    防抖设置事件延迟并在空闲时间去触发事件;

    节流是利用定时器将事件隔一定的时间触发一次。

  • 相关阅读:
    关于Shipping
    怎么Debug Background Job [转载sdn]
    如何显示IDoc的每个segment/field的具体说明
    underscore.js
    Javascript Style Guide
    [转] Ajax_XMLHttpRequest对象详解
    ExecutingMethodsFromLinkButtonParameters
    使用C#操作MSExcel表格COM
    [转]HttpContext, HttpModules 和 HttpHandlers
    几个实用的Servlet应用例子入门、cookie、session及上传文件
  • 原文地址:https://www.cnblogs.com/LcxWeb/p/14153523.html
Copyright © 2011-2022 走看看