哪种方式更方便在无限循环中执行异步函数,每次执行之间有一个睡眠(Node.js / Vanilla JS)

Which way is more convenient execute an async function in endless loop with a sleep between each execution (Node.js / Vanilla JS)

我写了一些异步函数,它做了一些事情然后 returns 什么都不做。 函数结束执行后,我想等待几秒钟,然后再执行相同的例程。

流程是这样的: 1.执行函数 2.等待执行完成 3. Wait/Sleep 一段时间 4. 从第一步开始

一个无限循环的函数执行,睡眠并重新开始。

现在我的问题是下面两个代码块中哪个更适合使用:

选项 1:

const MEANING_OF_LIFE = 42;
const DELAY_IN_MILLISECONDS = 1000;


const whatsTheMeaningOfLife = async () => {
  console.log(MEANING_OF_LIFE);
}

const outter = fn => {

  inner = async fn => {
    await fn();
    setTimeout(() => outter(fn), DELAY_IN_MILLISECONDS);
  };

  inner(fn);
};

(() => {
  outter(whatsTheMeaningOfLife);
})();

选项 2:

const MEANING_OF_LIFE = 42;
const DELAY_IN_MILLISECONDS = 1000;


const whatsTheMeaningOfLife = () => {
  console.log(MEANING_OF_LIFE);
}

const sleep = () => {
  return new Promise((resolve, ) => {
    setTimeout(() => resolve(), DELAY_IN_MILLISECONDS);
  });
};

(async () => {
  while(true) {
    await whatsTheMeaningOfLife();
    await sleep();
  }
})();

第二个版本似乎更短、更清晰、更易于理解,还允许您正确处理错误。但是,我建议将 DELAY_IN_MILLISECONDS 作为参数传递给 sleep,而不是使用全局常量。