JSFiddle - React, Tailwind, and code Playground

by artgas_pro

JavaScript

function f(x) {
      alert(x);
   }

   function calls(func, ms) {
      let call = true
      return function (x) {
         console.log("UP: " + call + " " + x)
         if (!call) {
            setTimeout(() => { call = true }, ms);
            return false
         } else {
            console.log("BEFORE: " + call + " " + x)
            call = false;
            console.log("AFTER: " + call + " " + x)
            return func.apply(this, arguments);
         }
      }
   }


   // создаём обёртку
   f = calls(f, 1000);

   f(1);
   f(2);
   setTimeout(() => f(3), 100);
   setTimeout(() => f(4), 1100); // выполняется
   setTimeout(() => f(5), 1500); // должен быть проигнорирован (прошло только 400 мс от последнего вызова) но выполняется.