Skip to content

Instantly share code, notes, and snippets.

@yoavniran
Created November 1, 2015 09:04
Show Gist options
  • Save yoavniran/d1d33f278bb7744d55c3 to your computer and use it in GitHub Desktop.
Save yoavniran/d1d33f278bb7744d55c3 to your computer and use it in GitHub Desktop.
ES6 animation frame conscious event listener
const addFrameConsciousEvent = (obj, event, handler) => { //adapted from: https://developer.mozilla.org/en-US/docs/Web/Events/resize#Example
let isRunning = false;
const handlerWrapper = (e)=> {
if (!isRunning){
isRunning = true;
requestAnimationFrame(()=>{ //throttling so only execute when the browser is ready to re-render
isRunning = false;
handler(e);
})
}
};
obj.addEventListener(event, handlerWrapper);
return ()=>obj.removeEventListener(event, handlerWrapper); //return a cleanup fn
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment