Предназначен для динамического создания с функциональностью его удаления из , на случай, если гость станет
Полезно в случаях, когда гость сделал свою работу и должен быть удален из пула патронов, но в случае если гость стал патрном. У класса Patron есть метод disposed, который берется от гостя. В логике PatronPool после каждой передачи значения патрону идет проверка не нужно ли удалить этот патрон из пула вызовом метода disposed
Вместо класса GuestDisposable можно использовать функцию - для того чтобы удалить патрон из всех пулов. либо функцию - проверяет есть ли патрон в каком-либо пуле
Пример 1.
import { SourceWithPool, Patron, GuestDisposable } from "patron-oop";
const source = new SourceWithPool("Один");
source.value(
new Patron(
new GuestDisposable(
(value) => {
document.querySelector(".guest-result").textContent = value;
},
(value) => {
return value !== "Один";
}
)
)
);
setTimeout(() => {
source.give("Два");
});
setTimeout(() => {
source.give("Три");
}, 100);
Результат 1.