我编写了一些异步函数,它执行某些操作然后不返回任何内容。 函数结束执行后,我想等待几秒钟,然后执行相同的例程。
流程是这样的: 1. 执行函数 2.等待执行完成 3.等待/ sleep 一段时间 4.从第1步开始
函数执行的无限循环, sleep 并重新开始。
现在我的问题是下面的 2 个代码块中哪一个更适合使用:
选项 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
,而不是使用全局常量。
关于javascript - 哪种方式更方便在无限循环中执行异步函数,并在每次执行之间进行 sleep (Node.js/Vanilla JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54928912/