Javascript 有没有一种干净的方法可以无限地使用异步函数?

Javascript 有没有一种干净的方法可以无限地使用异步函数?,javascript,ecmascript-6,eslint,eslint-config-airbnb,Javascript,Ecmascript 6,Eslint,Eslint Config Airbnb,根据ESLint的说法,像这样的代码不是“干净的代码” for(;;) { await *async function* } 我的目标是无限循环某个函数,一个接一个地执行它,而不会因为调用堆栈的限制而最终使我的应用程序崩溃。我已经考虑了一段时间,但是想不出任何其他的方法来做同样的事情。埃斯林特的建议在我的情况下也行不通;他们建议启动循环中的所有函数,并使用.all()在循环外等待它们的resolve/reject回调 谢谢你的帮助!我只想写得尽可能清晰是的,有几种模式可以用来“无限循环”。

根据ESLint的说法,像这样的代码不是“干净的代码”

for(;;) {
  await *async function*
}
我的目标是无限循环某个函数,一个接一个地执行它,而不会因为调用堆栈的限制而最终使我的应用程序崩溃。我已经考虑了一段时间,但是想不出任何其他的方法来做同样的事情。埃斯林特的建议在我的情况下也行不通;他们建议启动循环中的所有函数,并使用.all()在循环外等待它们的resolve/reject回调


谢谢你的帮助!我只想写得尽可能清晰

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

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

如ESLint文档所述:

在许多情况下,循环的迭代实际上并不独立于 彼此。例如,一次迭代的输出可以用作 输入到另一个。或者,可以使用循环重试异步 未成功的操作。在这种情况下,使用 在循环中等待,建议通过 标准ESLint禁用注释

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

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

/* eslint-disable no-await-in-loop */
//Your code here...
/* eslint-enable no-await-in-loop */

正如ESLint文档所述:

在许多情况下,循环的迭代实际上并不独立于 彼此。例如,一次迭代的输出可以用作 输入到另一个。或者,可以使用循环重试异步 未成功的操作。在这种情况下,使用 在循环中等待,建议通过 标准ESLint禁用注释

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

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

/* eslint-disable no-await-in-loop */
//Your code here...
/* eslint-enable no-await-in-loop */

while(true)
?@ChrisRiebschlager-ESLint不喜欢在任何循环中等待,它可能只是我想做的事情的唯一解决方案,所以这不会是一个问题,但除此之外,我当然喜欢最干净的解决方案:为什么ESLint日志重要?好的!
setInterval
?@ChrisRiebschlager不等待函数完成,充其量只是一个猜测:P但是,正如estus所说,我会删除规则。我今天开始使用eslint,非常喜欢它,所以我想它有点让我发疯了x)那么
怎么样,而(true)
?@ChrisRiebschlager eslint不喜欢在任何循环中等待它可能只是我想做的事情的唯一解决方案,所以这不会是一个问题,但除此之外,我当然喜欢最干净的解决方案:PWhy是什么ESLint日志重要?好的!
setInterval
?@ChrisRiebschlager不等待函数完成,充其量只是一个猜测:P但是,正如estus所说,我会删除规则。我今天开始使用eslint,非常喜欢它,所以我想它有点让我发疯了(x)由于调用堆栈,这最终会使我的应用程序崩溃;(不,它不应该“崩溃”应用程序。创建一个调用自身的函数,运行代码并等待一段时间。最终,您将得到不准确的调用堆栈错误。请参阅。您也可以使用异步迭代器执行相同的任务,请参阅@timgfx处的代码。您已经多次尝试了该代码。如果您关心的是什么,请不要使用ESLint最终会因为调用堆栈而使我的应用程序崩溃;(不,它不应该“崩溃”应用程序。创建一个调用自身的函数,运行代码并等待一段时间。最终,您将得到不准确的调用堆栈错误。请参阅。您也可以使用异步迭代器执行相同的任务,请参阅@timgfx处的代码。您已经多次尝试了该代码。如果您关心的是什么,ESLint日志不使用ESLintIll禁用它,谢谢。我对遵守eslint规则有点疯狂:)我会禁用它,谢谢。我对遵守eslint规则有点疯狂:)