2016-05-26 26 views
9

Sono arrivato al codice JS con alcuni loop infiniti (stiamo usando le fibre del nodo per permettere che le cose accadano).Perché ESLint genera errori di filatura mentre (true) utilizza le fibre?

ESLint odia:

while (true) { 

} 

causa della condizione costante.

Il seguente è consentito se:

for(;;) { 

} 

Oltre la semplice alimentazione del lintbeast, ci sono ragioni oggettive per favorire for sopra while (o viceversa)?

NOTA: questa domanda richiede esplicitamente ragioni oggettive e quindi non è semplicemente basata sull'opinione pubblica.

+2

Dal momento che le prestazioni non sono di solito un problema in cicli infiniti ... a chi importa? – ssube

+0

È questo con vanilla eslint o con plugin? (mai usato da solo) – glcheetham

+7

Non sono sicuro del motivo per cui così tanti sono downvoting, questa sembra una domanda legittima. – dman2306

risposta

8

Queste regole sui loop infiniti provengono da prima che i generatori fossero una cosa e non fossero nemmeno a conoscenza delle fibre.

Partendo dal presupposto che ogni funzione non sospende e restituisce mai (come un generatore, async -keykey function o una fibra) la regola ha molto senso per mettere in guardia contro le costanti nei loop.

Ora che i tempi sono cambiati, la regola non ha più senso e quello che stai facendo è perfetto.

Se controlliamo il eslint repo è stato discusso e ritenuto "non abbastanza importante riconoscere" nel frattempo:

Non credo che questo ha un senso come eccezione built-in. Se lo fai, allora è meglio disabilitare manualmente la regola nel generatore usando un commento.

La soluzione alternativa for(;;) è stata suggerita ma tutte le persone coinvolte comprendono che si tratta di un trucco per questo caso particolare.

Disabilitare la regola.

+0

inb4: Sì, sono a conoscenza del fatto che i generatori "sono una cosa" in Mozilla Firefox per circa 6 anni: intendevo dire in "standard in Node". –

+0

Questo problema è stato risolto con una nuova bandiera: https://github.com/eslint/eslint/pull/6202 –

Problemi correlati