1. function debounce(fn, timeout) {
    
  2.   let executionTimeoutId = null;
    
  3. 
    
  4.   return (...args) => {
    
  5.     clearTimeout(executionTimeoutId);
    
  6.     executionTimeoutId = setTimeout(fn, timeout, ...args);
    
  7.   };
    
  8. }
    
  9. 
    
  10. export default debounce;