Подход "Подписчик-Издатель" (EventEmmiter) нужен для разделения частей приложения на независимые модули.
Например, нужно показывать на странице сколько товаров в корзине.
Подход с вызовом функций:
const renderCart(count) {
$('#cart').text(count);
}
const renderFooterNavCart(count) {
$('.footer .cart').text(count);
}
const addToCartHandler() {
const count = $('.footer .cart').text() + 1;
renderCart(count);
renderFooterNavCart(count);
// Если добавится еще виджет с отображением количества товаров в корзине —
// нужно найти этот обработчик и добавить сюда функцию отрисовки
}
Подход "Подписчик-Издатель":
const renderCart(count) {
$('#cart').text(count);
}
const renderFooterNavCart(count) {
$('.footer .cart').text(count);
}
const addToCartHandler() {
const count = $('.footer .cart').text() + 1;
emitEvent('cartCountCanged', count)
}
subscribe('cartCountCanged', (count) => {
renderCart(count);
renderFooterNavCart(count);
})
// Если добавится еще виджет с отображением количества товаров в корзине —
// вызвать
subscribe('cartCountCanged', (count) => {
// виджет(count)
}
// в любом месте приложения.