Предназначен для динамического превращения в
Это поведение полезно в случаях, когда нужно из просто посетителя(гостя) сделать постоянного посетиеля(патрона). Это будет означать что если у есть новые данные, то источник отдаст эту новую порцию данных всем своим постоянным посетителям(патронам)
Пример 1.
import {
Patron,
SourceWithPool,
Source,
GuestDisposable,
isPatronInPools,
} from "patron-oop";
const source = new SourceWithPool(1);
const timer = new Source((guest) => {
source.value(guest);
const repeat = () => {
if (!isPatronInPools(guest)) {
return;
}
source.value((value) => {
setTimeout(() => {
source.give(value + 1);
repeat();
}, 1000);
});
};
repeat();
});
timer.value(
new Patron(
new GuestDisposable(
(value) => {
const el = document.querySelector(".patron-result");
if (el) {
el.textContent = `Секунд прошло ${value}`;
}
},
() => {
return !document.querySelector(".patron-result");
}
)
)
);
Результат 1.