這不會對工作內置油門的方法。
你自己建立這個並不難。例如,這裏的一些代碼,讓你打電話.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感興趣。
我不會說這是油門擴展器的限制,而是可觀察擴展如何工作的限制。也許你可以做一個新的油門延伸,可以檢查可觀察的並相應地調整時間。 –