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;
}

您能否提供示例代码,以便更容易理解您想要实现的目标?您能否提供示例代码,以便更容易理解您想要实现的目标?