编写一个名为limitedInterval
的函数,该函数按以下顺序接受参数:
- 回调函数
- 等待时间(毫秒)
- 限制时间(以毫秒为单位)。
limitedInterval
应每 wait
毫秒运行一次回调,最多 limit
毫秒,然后停止。
这是我尝试做的:
function limitedInterval(callback, wait, limit){
setTimeout(callback, wait);
}
var wait = 100;
var limit = 550;
function callback(){
console.log("Repeating Callback");
}
// should log 'repeating' once per 100 ms, five times.
limitedInterval(() => console.log('repeating'), wait, limit);
我无法理解如何设置 setTimeout 的限制,以便函数应该每 100 毫秒记录一次"重复",五次
我会做如下事情:
const TEMPO = 100;
const MAX = 500;
let count = 0;
const id = setInterval(() => {
console.log('x');
if (count > MAX) {
clearInterval(id);
}
count += TEMPO;
}, TEMPO);
- 初始化常量并
count
以提供限制 - 每次迭代的运行间隔递增
count
- 计数超出
MAX
值时的中断间隔
一种基于 setInterval
和 setTimeout
javascript-timer 方法的方法:
const TEMPO = 100;
const MAX = 500;
const id = setInterval(() => {
console.log('x');
}, TEMPO);
setTimeout(() => clearInterval(id), MAX);
- 初始化常量
- 给定
TEMPO
的运行间隔 - 运行超时,中断间隔
MAX
延迟
确保在调用回调之前增加时间,否则你会调用它太多次。
const limitedInterval = (callback, wait, limit) => {
let time = 0;
const handleTime = () => {
time += wait; // increment time before checking limit & invoking callback
if (time < limit) {
callback();
} else {
clearInterval(interval);
}
}
const interval = setInterval(handleTime, wait);
}