如何编写一个函数,该函数应该每 'wait' 毫秒运行一次回调,最多 'limit' 毫秒,然后停止



编写一个名为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);
  1. 初始化常量并count以提供限制
  2. 每次迭代的运行间隔递增count
  3. 计数超出MAX值时的中断间隔

一种基于 setIntervalsetTimeout javascript-timer 方法的方法:

const TEMPO = 100;
const MAX = 500;
const id = setInterval(() => {
  console.log('x');
}, TEMPO);
setTimeout(() => clearInterval(id), MAX);
  1. 初始化常量
  2. 给定TEMPO的运行间隔
  3. 运行超时,中断间隔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);
}

最新更新