Класс
Класс SourceActive можно назвать активным источником данных. Чтобы значение было рассчитано мы должны явно вызывать метод do. Подобные классы полезны в случаях, когда вычисление нужно выполнить не сразу а по событию
Также можно отдельно использовать
Пример 1.
import { SourceActive, Patron } from "patron-oop";
const eur = new SourceActive((_, source) => {
source.give("Loading...");
fetch("https://www.cbr.ru/scripts/XML_daily.asp")
.then((r) => r.text())
.then((r) => {
const parser = new DOMParser();
const doc = parser.parseFromString(r, "application/xml");
const eurNode = doc.querySelector('[ID="R01239"] Value');
source.give(eurNode.textContent);
});
});
eur.value(
new Patron((val) => {
document.querySelector(".guest-result").textContent = `EUR/RUB = ${val}`;
})
);
document
.getElementById("get-eur")
.addEventListener("click", eur.do.bind(eur));
Результат 1.