【问题标题】:Write multiple setInterval() at once with the same second parameter使用相同的第二个参数一次编写多个 setInterval()
【发布时间】:2022-07-06 00:12:23
【问题描述】:

我正在制作一个同时显示模拟、数字和日期的时钟 UI。我为每个需要 setInterval() 的情况创建了一个函数。我想知道我是否可以一次写它们以防万一。

function getAnalog(){
  return 'something';
}
function getDigital(){
  return 'something';
}
function getDate(){
  return 'something';
}

setInterval(getAnalog,1000);setInterval(getDigital,1000);setInterval(getDate,1000);
getAnalog();getDigital();getDate();

【问题讨论】:

  • 制作一个调用每个函数的函数? [getAnalog, getDigital, getDate].map(fnc => { fnc(); return setTimeout(fnc, 1000); });
  • 创建一个调用其他三个函数的函数,并使用单个间隔。
  • 与问题无关,但使用 setInterval 更新时钟并超时 1000 将导致时钟漂移或跳跃,具体取决于实现。我会使用requestAnimationFrame

标签: javascript setinterval syntactic-sugar


【解决方案1】:

您可以创建另一个函数来调用所有其他函数。

function getAnalog(){
  return 'something';
}
function getDigital(){
  return 'something';
}
function getDate(){
  return 'something';
}
const fn = () => {
    getAnalog();
    getDigital();
    getDate();
};
setInterval(fn, 1000);
fn();

【讨论】:

    【解决方案2】:
    // create an array with each function
    const functions = [
      function getAnalog(){
        return 'something';
      },
      function getDigital(){
        return 'something';
      },
      function getDate(){
        return 'something';
      },
    ]
    
    functions.forEach(fn => {
      setInterval(fn, 1000) // create each interval in the loop
      fn() // run each function in the loop
    })
    

    【讨论】:

    • 它更整洁,但这仍然会在人们完成这项工作时产生多个间隔。
    • @DBS 是的,但是 OP 没有指定这一切是否应该是一个间隔,但只有一个是有意义的
    猜你喜欢
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    相关资源
    最近更新 更多