Несколько экземпляров класса используют общую переменную. Как правильно сделать?

Пытаюсь понять, как принято решать такую задачу: введите сюда описание изображения

Есть несколько экземпляров класса, реагирующих на 'resize' окна. Для того, чтобы серия объектов не дергалась с каждым 'resize', я вешаю на 'resize' обработчик, который отрабатывает resize не чаще, чем раз в секунду, и в случае ресайза отправляет окну событие refreshed:

    handleResize() {
        let resizeTimeout;
        return function() {
            if (!resizeTimeout) {
                resizeTimeout = setTimeout(function() {
                    resizeTimeout = null;
                    console.log('Push refresh event');
                    let refreshedEvent = new Event('refreshed');
                    window.dispatchEvent(refreshedEvent);
                }, 1000);
            }
        };
    }

Обработчик должен создаваться вместе с созданием первого экземпляра. Но я не понимаю, где хранить сам обработчик, и как каждый из объектов будет понимать, что обработчик уже создан. Приходится создавать глобальную переменную и ее проверять. Насколько это хорошая практика, и как поступают в таком случае?


Ответы (2 шт):

Автор решения: Dmitriy Nikoalev

Глобальные переменные можно создавать, но один из принципов функционального программирования заключается в неизменности этих переменных. Если же необходимо изменить, тогда копируете переменную в другую в функции и возвращаете ее

→ Ссылка
Автор решения: Sergei Kirjanov

Если брать React, то я бы сделал Общий SizeProvider где-то близко к корню компонент, и провайдил бы из него контекст, а те, кому интересно использовали useContex.

При этом я могу себе представить и 2 провайдера на разные части экрана. Или много (screen sharing / coworking).

→ Ссылка