ドロップダウンがあります:
<select data-bind="options: activeFilters, optionsValue:'value', value:funkyThingActiveFilter, optionsText:'text'"
このドロップダウンから何かを選択すると、関数が呼び出されてモデル全体が更新されます
model.funkyThingActiveFilter.subscribe(function (newVal) {
model.filterResults();
});
filterResults 関数は、AJAX を介してビューモデルの更新を取得します。
var url = '@Url.Action(MVC.funkyThingsController.IndexJSON())' + "?funkyThingActiveFilter=" + model.funkyThingActiveFilter();
$.ajax({
url: url,
dataType: 'json',
success: function (returnedData) {
ko.mapping.fromJS(returnedData, {}, model);
}
});
問題は、サブスクライバーがモデルの更新を確認すると、競合状態が発生することです。filterResults 関数にノックアウト スロットルを設定しようとしましたが、これは競合状態を遅らせるだけです。
また、セマフォの作成も試みました。ここでは、filterResults 関数が inFunction 型の変数を設定します。ただし、バインディングが非同期的に更新されるように見えるため、これは機能しませんでした。
ページがぐるぐる回るのを止めるにはどうすればいいですか?!