我正在寻找一种方法来调用不同的函数,如果它被快速连续调用。第一次通话需要尽可能快地完成。
到目前为止,我已尝试_.throttle
_.debounce
var _ = require("underscore")._;
function foo(){
console.log("foo");
}
function bar(){
console.log("bar");
}
var delayedFoo = _.throttle(foo, 1000);
来处理这个问题,这几乎是我所寻求的但并不完全。我可以使用这些来延迟orignal函数调用,但是当多次调用同时发生时我想调用一个完全不同的函数。
这可能还是
示例:
var delayedFoo = _.route(foo, bar, 1000);
取而代之的是节流我希望foo()被调用一次然后bar()持续指定的持续时间,然后才能再次调用foo():
{{1}}
是否有像这样的内置函数的库或框架?
答案 0 :(得分:1)
是否有像这样的内置函数的库或框架?
我不知道,但自己编程应该是微不足道的:
function route(hard, weak, period) {
var isThrottled = false;
return function() {
if (isThrottled) {
return weak.apply(this, arguments);
} else {
isThrottled = true;
setTimeout(function() {
isThrottled = false;
}, period);
return hard.apply(this, arguments);
}
};
}