Класс SourceMap нужен в случаях обработки множества значений, через
создание на основе этих значений объектов -
Пример 1.
import { Source, SourceWithPool, GuestCast, SourceMap, PrivateClass, give } from "patron-oop";
class X2 {
constructor(baseNumber) {
this.baseNumber = baseNumber;
}
value(guest) {
this.baseNumber.value(
new GuestCast(guest, (v) => {
give(v * 2, guest);
})
);
return this;
}
}
const source = new SourceWithPool([1, 2, 3, 9]);
const guestMapped = new SourceMap(source, new PrivateClass(X2));
guestMapped.value((v) => {
document.querySelector(".guest-result").textContent = v.join();
});
Результат 1.
Так же можно передавать итерируемый источник источников данных. Благодаря этому можно параллельно вычислить общий результат нескольких источников. Пример использования ниже
Пример 2.
import {
Source,
SourceWithPool,
GuestCast,
SourceMap,
PrivateClass,
give,
isSource,
} from "patron-oop";
(() => {
class X3 {
constructor(baseNumber) {
this.baseNumber = baseNumber;
}
value(guest) {
this.baseNumber.value(
new GuestCast(guest, (v) => {
give(v * 3, guest);
})
);
return this;
}
}
const numSource = (num) =>
new Source((guest) =>
setTimeout(() => {
give(num, guest);
}, 8000)
);
const source = new SourceWithPool([
numSource(1),
numSource(2),
numSource(3),
numSource(4),
numSource(5),
]);
const map = new SourceMap(source, new PrivateClass(X3));
map.value((v) => {
document.querySelector(".guest-result-2").textContent = v.join();
});
})();
Результат 2.