これは、組み込みのスロットル メソッドでは機能しません。
これを自分で構築するのは難しくありません。たとえば、任意のオブザーバブルで .throttle を呼び出し、自由に変更できるスロットル時間オブザーバブルを渡すことができるコードを次に示します。
ko.subscribable.fn.throttle = function(throttleTimeObservable) {
var subscribable = this;
var throttledObservable = ko.observable();
var timeoutHandle = null;
if (ko.isObservable(throttleTimeObservable)) {
throttletimeObservable.subscribe(function() { clearTimeout(timeoutHandle) });
}
subscribable.subscribe(function(val) {
clearTimeout(timeoutHandle);
throttleTime = ko.utils.unwrapObservable(throttleTimeObservable);
timeoutHandle = setTimeout(function() { throttledObservable(val); }, throttleTime);
});
return throttledObservable;
}
使い方は簡単です:
// Usage:
var existingObservable = ...;
var throttleTime = ko.observable(500);
var throttled = existingObservable.throttle(throttleTime);
// Change the throttle willy nilly!
throttleTime(1000);
このような多くのことを行っている場合 (スロットリング、さまざまなオブザーバブルを一緒に構成する)、Rx.jsに興味があるかもしれません。