Автор видимо имел ввиду типичный случай, когда не вообще нужно только один раз использовать функцию при ресайзе, а когда эта функция должна отработать единожды при серии ресайзов, т.е при окончании грубо говоря этого события (потому как при ресайзе или скролле это события возникает в каждую единицу времени). Ну и повторно так же отрабатывать единожды при возобновлениии новой серии ресайзов.
Потому как то, что написали вверху, сработает один раз и все на этом. На примере смена ориентации на мобильных, один раз при повороте отработает, при повторном повороте в обратное положение уже нет.
Пример ниже, будет срабатывать идиножды всегда, в промежутке паузы заданном (500) аргументом
var waitForFinalEvent = (function () {
var timers = {};
return function (callback, ms, uniqueId) {
if (!uniqueId) {
uniqueId = "Don't call this twice without a uniqueId";
}
if (timers[uniqueId]) {
clearTimeout (timers[uniqueId]);
}
timers[uniqueId] = setTimeout(callback, ms);
};
})();
$(window).resize(function () {
waitForFinalEvent(function(){
alert('Resize...');
//...
}, 500, "some unique string");
});
Источник:
https://stackoverflow.com/questions/2854407/javasc...
Или как-то так
var isEvent = false;
$( window ).on( 'resize', function() {
if ( !isEvent ) {
// this my code
isEvent = true;
setTimeout( function() {
isEvent = false;
}, 1000 );
}
} )