0

如果它被快速连续调用,我正在寻找一种调用不同函数的方法。不过,第一个电话需要尽快完成。

到目前为止,我已经尝试过Underscore.js_.throttle的and来处理这个问题,这几乎是我正在寻找的,但并不完全是。我可以用这些延迟原始函数调用,但是当同时发生多个调用时,我想调用一个完全不同的函数。_.debounce

这是可能的还是

例子:

var _ = require("underscore")._;

function foo(){
   console.log("foo");
}

function bar(){
   console.log("bar");
}

var delayedFoo = _.throttle(foo, 1000);

相反,我希望 foo() 被调用一次,然后 bar() 在指定的持续时间内被调用,然后 foo() 可以再次被调用:

var delayedFoo = _.route(foo, bar, 1000);

有没有这样的内置函数的库或框架?

4

1 回答 1

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);
        }
    };
}
于 2013-09-27T15:06:34.480 回答