Javascript 淘汰具有多个订阅的单个可观察对象
我继承了一个使用Knockout为UI编写的应用程序,我很好奇对单个可观察属性进行多个订阅会产生什么影响 我有一个可观测的,有两个订阅。通过登录到控制台,我可以看到两个订阅都被一个接一个地激发 使用以下示例:(为了简洁起见,在完整的代码中有很多逻辑,其中一些是重复的) 我在想,我应该看到一些错误,因为有多个订阅,但一切似乎都很好,但我找不到任何明确的解释,为什么这样做是可以的 我只是想找出以下几点: 对一个可观察对象进行多个订阅是否正常且可接受? 是否有任何潜在的影响,即比赛条件可能? 是否真的需要多个订阅才能实现单次订阅无法实现的功能 我知道这在细节上可能有点害羞,但我真的只是想了解knockout在幕后是如何做的,看看我是否应该重构这段代码。允许多个观察者/订阅。简言之,设计模式的目的是:Javascript 淘汰具有多个订阅的单个可观察对象,javascript,knockout.js,observable,subscribe,Javascript,Knockout.js,Observable,Subscribe,我继承了一个使用Knockout为UI编写的应用程序,我很好奇对单个可观察属性进行多个订阅会产生什么影响 我有一个可观测的,有两个订阅。通过登录到控制台,我可以看到两个订阅都被一个接一个地激发 使用以下示例:(为了简洁起见,在完整的代码中有很多逻辑,其中一些是重复的) 我在想,我应该看到一些错误,因为有多个订阅,但一切似乎都很好,但我找不到任何明确的解释,为什么这样做是可以的 我只是想找出以下几点: 对一个可观察对象进行多个订阅是否正常且可接受? 是否有任何潜在的影响,即比赛条件可能? 是否真的
var可观测=ko.可观测(“a”);
可观察。订阅(函数(新值){
console.log(“观察者1”,newValue)
});
可观察。订阅(函数(新值){
console.log(“观察者2”,newValue)
});
可观察。订阅(函数(新值){
console.log(“观察者3”,newValue)
});
可观察的(“b”);
可观察的(“c”)代码>
允许多个观察者/订阅。简言之,设计模式的目的是:
将变更与变更的影响分离
允许变更产生任何任意影响
所以,击倒是通过它的可见物来实现的
var可观测=ko.可观测(“a”);
可观察。订阅(函数(新值){
console.log(“观察者1”,newValue)
});
可观察。订阅(函数(新值){
console.log(“观察者2”,newValue)
});
可观察。订阅(函数(新值){
console.log(“观察者3”,newValue)
});
可观察的(“b”);
可观察的(“c”)代码>
的设计允许多个订阅。整个想法是首先将一个变化和它的影响解耦,然后使您能够产生任何数量的影响。柯在这方面并不奇怪。“竞争条件”几乎没有问题-JS将在单个线程中运行您的代码,并且一个observable将一个接一个地通知每个观察者。我看到,正如它们在一个线程中一样,它们将一个接一个地执行,以便第二个订阅可以根据执行第一个订阅所产生的更改进行操作,我理解正确了吗?的设计允许多个订阅。整个想法是首先将一个变化和它的影响解耦,然后使您能够产生任何数量的影响。柯在这方面并不奇怪。“竞争条件”几乎没有问题-JS将在单个线程中运行您的代码,并且一个observable将一个接一个地通知每个观察者。我看到,正如它们在一个线程中一样,它们将一个接一个地执行,以便第二个订阅可以根据执行第一个订阅所产生的更改进行操作,我理解对了吗?
self.VisitDate = ko.observable();
self.VisitDate.subscribe(function (newValue) {
self.ListItemRemoved(removed);
});
self.VisitDate.subscribe(function (newValue) {
self.Basket.VisitDate(newValue);
});