| // 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); | |
| // } | |
| // }; | |
| // } | |