Avevo anche la stessa domanda e sono venuto qui. Dopo aver letto i post e i commenti, ho sentito che usare il generatore in una funzione freccia sembra essere vago:
const generator = () => 2*3; // * implies multiplication
// so, this would be a confusing
const generator = () =>* something; // err, multiplying?
const generator = () =*> ... // err, ^^
const generator = ()*=> ... // err, *=3, still multiplying?
const generator=*()=> ... // err, ^^
const generator = *param => ... //err, "param" is not fixed word
Questa è forse la ragione principale per cui non hanno implementato il generatore in relazione alla funzione freccia.
Ma se fossi stato uno di loro, avrei potuto pensare in questo modo:
const generator = gen param => ... // hmm, gen indicates a generator
const generator = gen () => ... // ^^
Sembra proprio che abbiamo una funzione asincrona:
const asyncFunction = async () => ... // pretty cool
Perché, con la normale funzione esiste la parola chiave asincrona , quindi la funzione freccia la sta utilizzando - async () =>
sembra probabile async function()
.
Ma non esiste una parola chiave come gen
o generator
e purtroppo la funzione freccia non la utilizza.
Concludere:
Anche se desiderano implementare il generatore nella funzione freccia, penso che debbano ripensare alla sintassi del generatore in core js:
generator function myfunc() {}
// rather than
function* myfunc() {} // or, function *myfunc() {}
E questo sarà un grosso errore. Quindi, mantenere la funzione della freccia fuori dal generatore, è piuttosto bello.
Seguendo il commento di @Bergi :
No. Le funzioni della freccia dovrebbero essere leggere (e non hanno un prototipo per esempio) e spesso una linea, mentre i generatori sono praticamente l'opposto.
Dirò che lo scopo del generatore da usare è run-stop-run e quindi non penso che dobbiamo preoccuparci del prototipo, di questo lessico, ecc.
function*
istruzione (parola chiave della funzione seguita da un asterisco) definisce una funzione del generatore."