处理快速连续的函数调用-Javascript/underline.js/node.js
我正在寻找一种方法来调用一个不同的函数,如果它被快速连续调用的话。第一个电话需要尽快接通 到目前为止,我已经尝试了来自的处理快速连续的函数调用-Javascript/underline.js/node.js,javascript,node.js,underscore.js,Javascript,Node.js,Underscore.js,我正在寻找一种方法来调用一个不同的函数,如果它被快速连续调用的话。第一个电话需要尽快接通 到目前为止,我已经尝试了来自的.throttle和.debounce来处理这个问题,这几乎就是我想要的,但并不完全是。我可以用这些延迟原始函数调用,但是当同时发生多个调用时,我想调用一个完全不同的函数 这是可能的还是可能的 例如: var _ = require("underscore")._; function foo(){ console.log("foo"); } function bar(
.throttle
和.debounce
来处理这个问题,这几乎就是我想要的,但并不完全是。我可以用这些延迟原始函数调用,但是当同时发生多个调用时,我想调用一个完全不同的函数
这是可能的还是可能的
例如:
var _ = require("underscore")._;
function foo(){
console.log("foo");
}
function bar(){
console.log("bar");
}
var delayedFoo = _.throttle(foo, 1000);
相反,我希望在再次调用foo()之前,先调用foo(),然后在指定的持续时间内调用bar():
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);
}
};
}
那么,您是要求每个“周期”总共调用两个函数(然后是
foo
,然后是bar
,等待1000毫秒,重新开始),还是其他什么?只是想确保我理解:)你想在每次通话或仅第一次通话的周期计数后切换回foo
吗?@Bergi我想在等待期结束后切换回foo。我正在测试它,它似乎工作正常!谢谢,现在我甚至不必使用下划线.js。你能解释一下你在这里做什么吗?如果任何一个函数都有参数,是否需要它?调用与route
d函数相同的函数。这真的很有用,其他语言(如Python或Ruby)中是否也存在类似的功能?我自己没有使用过它们,但我希望在任何“强大”语言中都有类似的机制:-)