Skip to content

Instantly share code, notes, and snippets.

@artemijeka
Last active March 27, 2023 14:05
Embed
What would you like to do?
onResizeStartEnd(
  () => {
    popup.classList.add("--hide");
  },
  () => {
    popup.classList.remove("--hide");
  },
  500
);
/**
* @author1 https://stackoverflow.com/questions/5489946/how-to-wait-for-the-end-of-resize-event-and-only-then-perform-an-action#answer-5490021
* @author2 web.master-artem.ru
* @param {Function} onResizeStartCallback
* @param {Function} onResizeEndCallback
* @param {Number} timeout
*/
export function onResizeStartEndTimeout(
onResizeStartCallback,
onResizeEndCallback,
timeout
) {
var doEndResizeCallback;
var resizeStart = false;
window.onresize = function () {
// Если старт ещё не инициализирован
if (!resizeStart) {
// Инициализируем старт
resizeStart = true;
// И запускаем стартовый колбэк
if (onResizeStartCallback) {
onResizeStartCallback();
}
}
clearTimeout(doEndResizeCallback);
doEndResizeCallback = setTimeout(() => {
if (onResizeEndCallback) {
onResizeEndCallback();
}
resizeStart = false;
}, timeout);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment