Ваше понимание requestAnimationFrame может быть правильным.Здесь происходит то, что в настоящее время браузеры уже отклоняют событие resize
до частоты обновления экрана.
Это можно продемонстрировать, добавив два прослушивателя событий, один отклоненный и один ню :
addEventListener('resize', e => console.log('non-debounced'));
let active = null;
addEventListener('resize', e => {
if(active) {
console.log("cancelling");
cancelAnimationFrame(active);
}
active = requestAnimationFrame(() => {
console.log('debounced');
active = null;
});
});
В обоих вышеупомянутых браузерах журнал будет
без опровержения
с откровением
без опровержения
с отклонением
...
Тот факт, что только один «необъявленный» обработчик событий, запущенный между двумя неосуществленными, доказывает, что даже не опровергнутая версия фактически отклоняется браузером.
Таким образом, поскольку эти события уже отменены, ваш код debouncer никогда не достигается.