gpt4 book ai didi

javascript - 表示函数类型的词,该函数将结果短路,直到经过特定的调用间隙

转载 作者:行者123 更新时间:2023-12-03 04:59:10 25 4
gpt4 key购买 nike

我需要一个函数f,当应用于函数g时,它会通过第一个调用,然后短路后续调用,直到后续调用之间的时间大于一个值。

用简单的英语来说:如果对 f 的调用像“机关枪”一样进来,我希望使用一个内存值,否则应该发生正常操作。

有没有一个词来形容这种功能修饰符?

var g = () => { /*...*/ };
var h = f(g); // is there an idiomatic term for function `f`
// `h` is now effectively limiting calls through to g

编辑:

当前的黑客实现(未经测试,不支持带参数的函数):

function memoizeByRate(fn, options) {
var lastCallTime = 0, result;
return function() {
var now = +Date.now(), tmpResult;
if((now - lastCallTime) > options.lifetime) {
tmpResult = fn.apply(this, arguments);
if(options.test && options.test(tmpResult)) {
lastCallTime = now; // !
result = tmpResult;
}
}
lastCallTime = now;
return result;
};
}

// "Test harness"
var i = 0;
var f = () => { console.log('call', ++i); }
var g = memoizeByRate(f, { lifetime: 1000 });

g()
g()
g()
setTimeout(g, 1000);

最佳答案

这称为debouncing ,在您的情况下,在前沿执行去抖函数。但是,该术语通常仅用于有副作用的函数,因此不会返回甚至存储任何结果,您需要添加术语 memoisation (就像你已经做的那样)。我想我会选择 debounceWithCachememoiseInBursts

参见What does _.debounce do?Debouncing and Throttling Explained Through Examples了解详情。

关于javascript - 表示函数类型的词,该函数将结果短路,直到经过特定的调用间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42299314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com