Knockout.js 在淘汰中调用声明的手动订阅?
我意识到,计算订阅或手动订阅的目的是跟踪观察到的变化。然而,我遇到了这样一种情况:我需要一个手动订阅,以便在声明后立即运行,而不是等待可观察到的更改 有没有办法告诉订阅立即运行一次 例如:Knockout.js 在淘汰中调用声明的手动订阅?,knockout.js,observable,Knockout.js,Observable,我意识到,计算订阅或手动订阅的目的是跟踪观察到的变化。然而,我遇到了这样一种情况:我需要一个手动订阅,以便在声明后立即运行,而不是等待可观察到的更改 有没有办法告诉订阅立即运行一次 例如: vm.foo = ko.observable("bar"); vm.foo.subscribe(function() { // code i want to run immediately, and on every observable change }); 好的,只有当vm.foo发生变化时,订
vm.foo = ko.observable("bar");
vm.foo.subscribe(function() {
// code i want to run immediately, and on every observable change
});
好的,只有当
vm.foo
发生变化时,订阅才会运行,但我有一些代码需要在应用程序启动后立即运行。您可以使用可观测
上的函数值hassmutated
通知所有订阅者可观测值发生了变化:
var vm = {};
vm.foo = ko.observable("bar");
vm.foo.subscribe(function() {
console.log('runs!');
});
ko.applyBindings(vm);
vm.foo.valueHasMutated(); // you see 'runs!' printed in console output
以下是一个您可以使用
可观测
上的函数valueHasMutated
通知所有订阅者可观测值发生了变化:
var vm = {};
vm.foo = ko.observable("bar");
vm.foo.subscribe(function() {
console.log('runs!');
});
ko.applyBindings(vm);
vm.foo.valueHasMutated(); // you see 'runs!' printed in console output
这里有一个我建议您创建自己的“subscribebeandrun”方法,它非常有用,并且不会因为使用通知任何和所有订阅者的valueHasMutated()而导致意外的副作用和性能问题 打字稿:
function subcribeAndRun<T>(o: KnockoutObservable<T>,callback: (v: T) => void): KnockoutObservable<T> {
o.subscribe(callback);
callback(o());
return o;
}
我建议您创建自己的“subscribebeandrun”方法,该方法非常有用,并且不会因为使用valueHasMutated()而导致意外的副作用和性能问题,valueHasMutated()会通知所有订阅者 打字稿:
function subcribeAndRun<T>(o: KnockoutObservable<T>,callback: (v: T) => void): KnockoutObservable<T> {
o.subscribe(callback);
callback(o());
return o;
}
您能否提供示例代码,以便更容易理解您想要实现的目标?您能否提供示例代码,以便更容易理解您想要实现的目标?