Как стать автором
Обновить

Комментарии 3

Найс пет-проджект, RxJS на минималках.

Хоть PubSub можно и самому написать за 5 минут без лишних выкрутасов:

class Observer<T = any> {
  private subs: Subscriber[] = [];

  subscribe(sub: Subscriber<T>): Unsubscribe {
    this.subs.push(sub);

    return () => {
      this.subs = this.subs.filter((item) => item !== sub);
    };
  }

  publish(...args: T[]): void {
    this.subs.forEach((sub) => {
      sub(...args);
    });
  }
}

type Subscriber<T = any> = (...args: T[]) => void;
type Unsubscribe = () => void;

// Client code example
const observer = new Observer<number>();

const unsubscribe = observer.subscribe((num) => {
  console.log(num);
});

observer.publish(42); // 42

unsubscribe();

observer.publish(666); // -

Хоть PubSub можно и самому написать за 5 минут без лишних выкрутасов:

Разумеется, это достаточно простой в реализации паттерн. В принципе, в моем варианте, класс, реализующий собственно PubSub, занимает 44 строчки кода вместе с импортами, отступами и JSDoc-комментариями. Все остальное - это выкрутасы для декораторов. Спасибо за комментарий!

PS: RxJS на минималках - это скорее другая моя поделка: https://github.com/YMSpektor/x-vars

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации