const throttle = (
callback: (...args: T) => void,
delay: number,
) => {
// this is not a global variable, just a local variable ??
let isWaiting = false;
return (...args: T) => {
if (isWaiting) {
return;
}
callback(...args);
// this just sets the local Variable to true ??
isWaiting = true;
setTimeout(() => {
isWaiting = false;
}, delay);
};
};
// Delay is 2000ms
window.addEventListener('resize', throttle(handleWindowResize, 2000));
Я не понимаю одного.
Когда функция дроссельной заслонки вызывается второй раз, скажем, через 100 мс, почему переменная isWaiting все еще верна, это должна быть просто локальная переменная и не влияет на второй вызов функции?? Вот чего я не понимаю.
[code]const throttle = ( callback: (...args: T) => void, delay: number, ) => { // this is not a global variable, just a local variable ?? let isWaiting = false;
return (...args: T) => { if (isWaiting) { return; }
callback(...args); // this just sets the local Variable to true ?? isWaiting = true;
setTimeout(() => { isWaiting = false; }, delay); }; }; // Delay is 2000ms window.addEventListener('resize', throttle(handleWindowResize, 2000)); [/code] Я не понимаю одного. Когда функция дроссельной заслонки вызывается второй раз, скажем, через 100 мс, почему переменная isWaiting все еще верна, это должна быть просто локальная переменная и не влияет на второй вызов функции?? Вот чего я не понимаю.