函数节流
    一段时间执行一次之后,就不执行第二次

    1. //函数节流
    2. function throttle(fn, delay) {
    3. let canUse = true
    4. return function () {
    5. if (canUse) {
    6. canUse = false
    7. const context = this
    8. const args = arguments
    9. setTimeout(() => {
    10. fn.apply(context, args)
    11. canUse = true
    12. }, delay)
    13. }
    14. }
    15. }

    函数防抖
    在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。

    1. //函数防抖
    2. function debounce(fn, delay) {
    3. let timer = null
    4. return function () {
    5. const context = this
    6. const args = arguments
    7. if (timer) {
    8. clearTimeout(timer)
    9. }
    10. timer = setTimeout(() => {
    11. fn.apply(context, args)
    12. }, delay)
    13. }
    14. }