// export function throttle(callback: () => void, wait: number): () => void { | |
// if (typeof function_ !== 'function') { | |
// throw new TypeError(`Expected the first argument to be a \`function\`, got \`${typeof function_}\`.`); | |
// } | |
// | |
// let timeoutId; | |
// let lastCallTime = 0; | |
// | |
// return function throttled(...arguments_) { | |
// clearTimeout(timeoutId); | |
// | |
// const now = Date.now(); | |
// const timeSinceLastCall = now - lastCallTime; | |
// const delayForNextCall = wait - timeSinceLastCall; | |
// | |
// if (delayForNextCall <= 0) { | |
// lastCallTime = now; | |
// function_.apply(this, arguments_); | |
// } else { | |
// timeoutId = setTimeout(() => { | |
// lastCallTime = Date.now(); | |
// function_.apply(this, arguments_); | |
// }, delayForNextCall); | |
// } | |
// }; | |
// } | |