Глядя на код, эта библиотека путает функции обратного вызова для подписей подписки.
В правильной архитектуре subscribe->cancel
метод subscribe
всегда должен возвращать объект Subscription
, чтобы обеспечить безопасный способ отмены подписки.
Поскольку вопрос открыт для какое-то время я предложу альтернативную библиотеку событий под-событий на ваше рассмотрение.
Специально для сигналов, согласно странице Сигналы , мы можем определить общие c тип сигнала:
class Signal extends SubEvent<void> {} // reusable Signal type
Тогда мы можем обновить ваш код следующим образом:
const onUpdate = new Signal();
const component = new Component();
// you can bind an event to the right context in 2 ways:
const sub = onUpdate.subscribe(component.Update.bind(component));
// or alternatively:
const sub = onUpdate.subscribe(component.Update, {thisArg: component});
void Update() {
this.onUpdate.emit(); // emit the event (signal)
}
class Component {
public Update(){
//do stuff
}
}
А затем, когда вам нужно отменить подписку, вы просто делаете это:
sub.cancel();