1

根据 ESLint,这样的一些代码不是“干净的代码”

for(;;) {
  await *async function*
}

我的目标是无限循环某个函数,一个一个地执行它,而不会因为调用堆栈限制而最终使我的应用程序崩溃。我已经考虑了一段时间,但想不出其他任何可以做同样的事情。ESLint 的建议在我的情况下也行不通。他们建议启动循环中的所有函数,并使用 .all() 在循环外等待它们的解析/拒绝回调。

帮助将不胜感激!我只是想尽可能干净地写这个

4

2 回答 2

7

正如 ESLint 文档所说:

在许多情况下,循环的迭代实际上并不是相互独立的。例如,一次迭代的输出可能用作另一次迭代的输入。或者,循环可用于重试不成功的异步操作。在这种情况下,在循环中使用 await 是有意义的,建议通过标准 ESLint 禁用注释禁用规则。

因此,如果您在每次迭代中等待是有意义的,请禁用此规则。如果您可以并行化异步调用,请使用Promise.all.

要仅在代码中的某个位置禁用 ESLint 规则,请执行以下操作:

/* eslint-disable no-await-in-loop */
//Your code here...
/* eslint-enable no-await-in-loop */
于 2018-01-21T18:48:06.067 回答
-1

是的,有几种模式可用于“无限循环”。您可以安排在函数完成时调用相同的函数。

于 2018-01-21T18:43:23.657 回答