我有一個應用程序有幾個淘汰賽的組件。淘汰賽組件都綁定到一組可訂閱的訂閱,點擊按鈕進行更新。每個組件都有多個訂閱功能,監聽訂閱者的更改以調用其中包含的更新功能。更新多個subscribables,但只執行更新一次在淘汰賽?
如何配置它們只在更新多個訂閱者時調用其更新功能一次?
下面是如何我的大多數組件負載的示例代碼段:
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 });
這似乎爲要求的工作。我知道油門貶值,但我很好奇爲什麼延期似乎沒有正常工作。
你有一些示例代碼?這聽起來像是延期更新的可能用例,但是如果沒有代碼片段或示例,很難說。 –
我用代碼示例更新了這個問題。 –