2016-05-26 2 views
9

Я пришел JS-код с некоторыми бесконечными циклами (мы используем узловые волокна, чтобы все могло случиться).Почему ESLint запускает ошибки lint во время (true) с использованием волокон?

ESLint ненавидит:

while (true) { 

} 

из-за постоянного состояния.

Следующая допускается, хотя:

for(;;) { 

} 

Помимо всего кормления lintbeast, есть ли объективные причины благоприятствуют for над while (или наоборот)?

ПРИМЕЧАНИЕ: Этот вопрос явно запрашивает объективные причины, и поэтому не просто основан на мнениях.

+2

Поскольку производительность, как правило, не вызывает беспокойства в бесконечных циклах ... кого это волнует? – ssube

+0

Это с ванильным eslint или с плагинами? (никогда не использовал его сам) – glcheetham

+7

Не знаете, почему так много нисходящих, это кажется законным вопросом. – dman2306

ответ

8

Эти правила о бесконечных циклах от генераторов были предметом и даже не знают волокон.

В предположении, что каждая функция никогда не приостанавливается и не возвращается (например, генератор, async - функция ключевого слова или волокно), правило имеет большое значение для предупреждения от констант в циклах.

Теперь, когда времена изменились - правило больше не имеет смысла, а то, что вы делаете, прекрасно.

Если проверить eslint repo это обсуждалось и считается «не настолько важно, чтобы признать» в то же время:

Я не думаю, что это имеет смысл в качестве встроенного исключения. Если вы это делаете, тогда лучше всего вручную отключить правило в генераторе, используя комментарий.

Было предложено обходное решение for(;;), но все участники понимают, что это взлом для данного конкретного случая.

Отключить правило.

+0

inb4: Да, я знаю, что генераторы «есть вещь» в Mozilla Firefox уже около 6 лет - я имел в виду как «стандарт в узле». –

+0

Это исправлено с новым флагом: https://github.com/eslint/eslint/pull/6202 –