Blame view

node_modules/uview-ui/libs/function/throttle.js 900 Bytes
c7add6cf   “wangming”   初始版本开发完毕
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  let timer; let
      flag

  /**

   * 节流原理:在一定时间内,只能触发一次

   *

   * @param {Function} func 要执行的回调函数

   * @param {Number} wait 延时的时间

   * @param {Boolean} immediate 是否立即执行

   * @return null

   */

  function throttle(func, wait = 500, immediate = true) {

      if (immediate) {

          if (!flag) {

              flag = true

              // 如果是立即执行,则在wait毫秒内开始时执行

              typeof func === 'function' && func()

              timer = setTimeout(() => {

                  flag = false

              }, wait)

          }

      } else if (!flag) {

          flag = true

          // 如果是非立即执行,则在wait毫秒内的结束处执行

          timer = setTimeout(() => {

              flag = false

              typeof func === 'function' && func()

          }, wait)

      }

  }

  export default throttle