处理函数调用的快速连续 - Javascript / underscore.js / node.js

时间:2013-09-27 14:27:02

标签: javascript node.js underscore.js

我正在寻找一种方法来调用不同的函数,如果它被快速连续调用。第一次通话需要尽可能快地完成。

到目前为止,我已尝试_.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}}

是否有像这样的内置函数的库或框架?

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);
        }
    };
}