JSFiddle - React, Tailwind, and code Playground

JavaScript

function debounce(func, args, time) {
  
  var timeout;
  var obj = this;
      
  function applyArgs () {
    
      console.log('APPLY args to original func!');
      func.apply(obj, args);
    
  };
  
  return function debounced () {
      
    if(timeout){
      clearTimeout(timeout);
    }
      
    timeout = setTimeout(applyArgs, time || 100); 
    
  };
 
}

console.log('make doItAfter3SecondsOfInactivity'); 

doItAfter3SecondsOfInactivity = debounce(
  
  function(){ 
    
    // our humble function
    console.log('_______________________________________');
    console.log('hey hey, ho ho, debounce has got to go'); 
    console.log(arguments); 
    console.log('_______________________________________');
    
  }, 
  
  ['arg1Hey!', 'arg2HeyHey!'],
  
  3000
  
);

//setInterval(doItAfter3SecondsOfInactivity, 1000);
doItAfter3SecondsOfInactivity();