Вы не можете предотвратить запуск этих событий. Они всегда делают. Что вы хотите сделать, это немедленно прекратить прослушивание, а затем обработать событие, чтобы избежать повторения. Затем весь обработчик устанавливается снова после setTimeout. Больше никакой рекурсии не происходит, если кто-то не изменяет размеры окна. Я использую 5000 мс здесь, так как это легче увидеть в консоли. Вы не должны видеть больше одного спама в консоли FF каждые 5 секунд, даже если вы изменяете размер как spaz.
(function staggerListen(){
window.onresize = function(){
window.onresize = false;
console.log('spam');
setTimeout(staggerListen,5000);
};
})()
Использование логики, чтобы решить, делать ли что-либо каждый раз при срабатывании обработчика, все еще технически запускает обработчик и оператор if + lookup. Это может стать тяжелым.