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

Handling quick succession of function calls - Javascript / underscore.js / node.js

本文关键字:js Javascript node underscore 函数调用 连续 处理      更新时间:2023-09-26

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

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

这可能还是

例:

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

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

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

我不知道,但自己编程应该是微不足道的:

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