是否有一种无限使用异步函数的简洁方法?

时间:2018-01-21 18:36:52

标签: javascript ecmascript-6 eslint eslint-config-airbnb

根据ESLint,这样的代码不是'清洁代码'

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

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

帮助将不胜感激!我只想尽可能干净地写出来

2 个答案:

答案 0 :(得分:5)

正如ESLint文档所说:

  

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

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

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

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

答案 1 :(得分:-1)

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