为什么 ESLint 在 while(true) 使用纤程时触发 lint 错误?

Why does ESLint trigger lint errors on while(true) using fibers?

我得到了带有一些无限循环的 JS 代码(我们正在使用节点纤维来允许事情发生)。

ESLint 讨厌:

while (true) {

}

因为条件不变。

以下是允许的:

for(;;) {

}

除了喂养 lintbeast,还有什么 objective 理由支持 for 而不是 while(反之亦然)?

注意:这个问题明确要求 objective 原因,因此不仅仅是基于意见。

这些关于无限循环的规则来自于生成器出现之前,甚至没有意识到纤程。

假设每个函数都不会挂起并且 returns(如生成器、async-关键字函数或纤程),该规则对于警告循环中的常量非常有意义。

现在时代变了 - 规则不再有意义,你所做的完全没问题。

如果我们检查eslint repo,它同时被讨论并视为"not important enough to acknowledge":

I don't think this makes sense as a built-in exception. If you're doing that, then it's best to manually disable the rule in the generator using a comment.

有人提出了解决方法 for(;;),但所有相关人员都明白这是针对此特定案例的黑客攻击。

禁用规则。