| 123456789101112131415161718192021 |
- /**
- * @desc 函数防抖
- * 与throttle不同的是,debounce保证一个函数在多少毫秒内不再被触发,只会执行一次,
- * 要么在第一次调用return的防抖函数时执行,要么在延迟指定毫秒后调用。
- * @example 适用场景:如在线编辑的自动存储防抖。
- * @param {Number} delay 0或者更大的毫秒数。 对于事件回调,大约100或250毫秒(或更高)的延迟是最有用的。
- * @param {Boolean} atBegin 可选,默认为false。
- * 如果`atBegin`为false或未传入,回调函数则在第一次调用return的防抖函数后延迟指定毫秒调用。
- 如果`atBegin`为true,回调函数则在第一次调用return的防抖函数时直接执行
- * @param {Function} callback 延迟毫秒后执行的函数。`this`上下文和所有参数都是按原样传递的,
- * 执行去抖动功能时,,调用`callback`。
- *
- * @return {Function} 新的防抖函数。
- */
- var throttle = require('./throttle');
- function debounce(delay, atBegin, callback) {
- return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);
- };
- module.exports = debounce;
|