私はいくつかのノックアウトコンポーネントを持つアプリケーションを持っています。ノックアウトコンポーネントは、すべてボタンクリックで更新されるサブスクライブ可能なセットにバインドされています。各コンポーネントには、サブスクライバの変更をリッスンするいくつかのサブスクライブ関数があり、サブスクライバの変更はそのサブスクライバに含まれる更新関数を呼び出します複数のサブスクリプションを更新しますが、ノックアウトで更新を1回だけ実行しますか?
複数のユーザが更新されたときに一度更新機能を呼び出すように設定するにはどうすればよいですか?私はサブスクライブ機能を置き換える場合
this.OBSERVABLE_NAME.subscribe(function() { this.updateChart(); }, this);
this.OBSERVABLE_NAME.subscribe(function() { this.updateChart(); }, this);
this.OBSERVABLE_NAME.subscribe(function() { this.updateChart(); }, this);
this.OBSERVABLE_NAME.subscribe(function() { this.updateChart(); }, this);
this.updateChart = function() {
$.ajax({
type: "POST",
traditional: true,
url: this.ajax_location,
data: this.ajax_parameters,
success: function (data) {
// DO SOMETHING
}.bind(this),
error: function (returndata) {
alert("Error:\n" + returndata.responseText);
}
});
};
しかし、::
ko.computed(function() {
$.ajax({
type: "POST",
traditional: true,
url: this.ajax_location,
data: this.ajax_parameters,
success: function (data) {
// DO SOMETHING
}.bind(this),
error: function (returndata) {
alert("Error:\n" + returndata.responseText);
}
});
}, this).extend({ throttle: 1 });
要求どおりに動作しているようです。ここ
は私のコンポーネントのほとんどは、負荷方法のサンプルスニペットです。私はスロットルが減価償却されていることを知っていますが、遅延が適切に機能していないように見えるのは不思議です。
サンプルコードがありますか?これは遅れた更新のユースケースのように聞こえるが、コードスニペットや例がなければ言うことは難しい。 –
コードサンプルで質問を更新しました。 –