哪种方式更方便在无限循环中执行异步函数,每次执行之间有一个睡眠(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
,而不是使用全局常量。
我写了一些异步函数,它做了一些事情然后 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
,而不是使用全局常量。