johnloy
2/21/2019 - 9:14 PM

Throttled window.resize Handler with requestAnimationFrame

//https://developer.mozilla.org/en-US/docs/Web/Events/resize
;
(function() {
  var throttle = function(type, name, obj_) {
    var obj = obj_ || window;
    var running = false;
    var func = function() {
      if (running) {
        return;
      }
      running = true;
      requestAnimationFrame(function() {
        obj.dispatchEvent(new CustomEvent(name));
        running = false;
      });
    };
    obj.addEventListener(type, func);
  };

  /* init - you can init any event */
  throttle("resize", "optimizedResize");
})();

// handle event
window.addEventListener("optimizedResize", function() {
  console.log("Resource conscious resize callback!");
});