我的油门功能没有等待限制时间
My throttle function is not waiting the limit time
我正在学习节流,我遇到了一个问题,我的节流方法没有等待 limit
时间到 运行。
const display = (msg) => {
console.log(msg). // I know this function does not do anything, but I'm trying to understand how I can call a function inside my throttle.
}
const throttle = (func, limit) => {
let flag = true;
return function() {
if(flag) {
func.apply(this, arguments);
flag = false;
setTimeout(() => flag = true, limit);
}
}
}
const throttleDisplay = () => {
return throttle(display("Hi"), 6000);
}
for(let i=1; i<=10; i++) {
setTimeout(throttleDisplay, i*1000);
}
我的输出是“Hi”10 次,但我不应该有 10 次 Hi,因为我在一个呼叫和另一个呼叫之间有 6 秒的等待时间。
throttle
将 回调 作为参数,但您正在立即调用 display
。
const throttleDisplay = () => {
return throttle(display("Hi"), 6000);
}
完全等同于
const throttleDisplay = () => {
const result = display("Hi");
return throttle(result, 6000);
}
看到问题了吗?
您需要一个函数来调用 display
并使用您想要的参数:
const throttleDisplay = () => {
return throttle(() => display("Hi"), 6000);
}
我正在学习节流,我遇到了一个问题,我的节流方法没有等待 limit
时间到 运行。
const display = (msg) => {
console.log(msg). // I know this function does not do anything, but I'm trying to understand how I can call a function inside my throttle.
}
const throttle = (func, limit) => {
let flag = true;
return function() {
if(flag) {
func.apply(this, arguments);
flag = false;
setTimeout(() => flag = true, limit);
}
}
}
const throttleDisplay = () => {
return throttle(display("Hi"), 6000);
}
for(let i=1; i<=10; i++) {
setTimeout(throttleDisplay, i*1000);
}
我的输出是“Hi”10 次,但我不应该有 10 次 Hi,因为我在一个呼叫和另一个呼叫之间有 6 秒的等待时间。
throttle
将 回调 作为参数,但您正在立即调用 display
。
const throttleDisplay = () => {
return throttle(display("Hi"), 6000);
}
完全等同于
const throttleDisplay = () => {
const result = display("Hi");
return throttle(result, 6000);
}
看到问题了吗?
您需要一个函数来调用 display
并使用您想要的参数:
const throttleDisplay = () => {
return throttle(() => display("Hi"), 6000);
}