Класс Patron

Patron на GitHub

Предназначен для динамического превращения гостя в патрона

Это поведение полезно в случаях, когда нужно из просто посетителя(гостя) сделать постоянного посетиеля(патрона). Это будет означать что если у источника данных есть новые данные, то источник отдаст эту новую порцию данных всем своим постоянным посетителям(патронам)

Пример 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.

Result here
Смотрите также

Source GuestDisposable SourceWithPool isPatronInPools