Я унаследовал приложение, написанное с использованием Knockout для пользовательского интерфейса, и мне любопытно, каков эффект наличия нескольких подписок на одно наблюдаемое свойство?
У меня есть наблюдаемая, которая имеет 2 подписки. Войдя в консоль, я вижу, что обе подписки срабатывают одна за другой.
Используя следующий пример: (это очень урезано для краткости, в полном коде много логики, часть которой дублируется)
self.VisitDate = ko.observable();
self.VisitDate.subscribe(function (newValue) {
self.ListItemRemoved(removed);
});
self.VisitDate.subscribe(function (newValue) {
self.Basket.VisitDate(newValue);
});
Я думал, что должен увидеть какую-то ошибку из-за нескольких подписок, но все работает нормально, но я не могу найти четкого объяснения, почему это нормально делать?
Я просто пытаюсь выяснить следующее:
Является ли нормальным и приемлемым наличие нескольких подписок на один наблюдаемый объект? Есть ли какое-либо основное влияние на это, например, условия гонки? Есть ли необходимость иметь несколько подписок, чтобы достичь чего-то, чего нельзя достичь с помощью одной подписки?
Я понимаю, что это может быть немного застенчиво в деталях, но я действительно просто пытаюсь понять, как нокаут делает что-то под прикрытием, чтобы увидеть, должен ли я искать рефакторинг этого кода или нет.