使用 setInterval() 的无限异步循环

ami*_*mit 6 javascript node.js

我有需要一些调用异步函数的无限循环的 nodejs 应用程序。我正在考虑实施以下内容:

async function execute1() {
   ...do some async work...
}

async function execute2() {
   ...do some async work...
}

setInterval(execute1, 500)
setInterval(execute2, 500)
Run Code Online (Sandbox Code Playgroud)

我担心的是,如果异步函数需要很长时间才能完成,打开的引用会堆积起来,这可能会导致内存崩溃。

  1. setInterval 是适合这项工作的工具吗?有没有更合适的工具?
  2. 如果前一次运行没有返回,确保 execute() 函数不会启动的最优雅的方法是什么?

Est*_*ask 10

setInterval 不是正确的工具,因为它不知道 promise 并且无法维护正确的控制流。

它可以是async无限循环的函数:

async function execute1() {
  while (true) {
    await new Promise(resolve => setTimeout(resolve, 500));
    // ...do some async work...  
  }
}

execute1();
Run Code Online (Sandbox Code Playgroud)