1. // 防抖
    2. export const debounce = (fn, interval) => {
    3. var timer;
    4. var gapTime = interval || 1000; //间隔时间,如果interval不传,则默认1000ms
    5. return function () {
    6. clearTimeout(timer);
    7. var context = this;
    8. var args = arguments; //保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。
    9. timer = setTimeout(function () {
    10. fn.call(context, args);
    11. }, gapTime);
    12. };
    13. };
    14. //节流函数
    15. export const throttle = (fn, gapTimes) => {
    16. const gapTime = gapTimes || 1500;
    17. let _lastTime = null;
    18. // 返回新的函数
    19. return function () {
    20. let _nowTime = +new Date();
    21. if (_nowTime - _lastTime > gapTime || !_lastTime) {
    22. fn.apply(this, arguments); //将this和参数传给原函数
    23. _lastTime = _nowTime; // 点击一次是会执行一次 但在这里进行了判断赋值 把现在时间给上一次时间 当下一次再点击时 现在时间减去上一次时间 如果大于设定间隔时间 才执行 fn()函数 传入的fn 才是我要执行的函数体
    24. }
    25. };
    26. };