remove comments
authorAlec Armbruster <alectrocute@gmail.com>
Sat, 17 Jun 2023 12:46:19 +0000 (08:46 -0400)
committerAlec Armbruster <alectrocute@gmail.com>
Sat, 17 Jun 2023 12:46:19 +0000 (08:46 -0400)
src/shared/utils/helpers/debounce.ts

index 7a1e8b19b8471bf0bbbbcf4908f93b1fc8248985..d5cd7017c9ce1380d1f1d6910d59e017449cf2db 100644 (file)
@@ -3,42 +3,22 @@ export function debounce<T extends any[], R>(
   wait = 1000,
   immediate = false
 ) {
-  // 'private' variable for instance
-  // The returned function will be able to reference this due to closure.
-  // Each call to the returned function will share this common timer.
   let timeout: NodeJS.Timeout | null;
 
-  // Calling debounce returns a new anonymous function
   return function () {
-    // reference the context and args for the setTimeout function
     const args = arguments;
-
-    // Should the function be called now? If immediate is true
-    //   and not already in a timeout then the answer is: Yes
     const callNow = immediate && !timeout;
 
-    // This is the basic debounce behavior where you can call this
-    //   function several times, but it will only execute once
-    //   [before or after imposing a delay].
-    //   Each time the returned function is called, the timer starts over.
     clearTimeout(timeout ?? undefined);
 
-    // Set the new timeout
     timeout = setTimeout(function () {
-      // Inside the timeout function, clear the timeout variable
-      // which will let the next execution run when in 'immediate' mode
       timeout = null;
 
-      // Check if the function already ran with the immediate flag
       if (!immediate) {
-        // Call the original function with apply
-        // apply lets you define the 'this' object as well as the arguments
-        //    (both captured before setTimeout)
         func.apply(this, args);
       }
     }, wait);
 
-    // Immediate mode and no wait timer? Execute the function..
     if (callNow) func.apply(this, args);
   } as (...e: T) => R;
 }