Eu também estava tendo a mesma pergunta e vim aqui. Depois de ler as postagens e comentários, senti que usar o gerador em uma função de seta parece ser 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
Este é o motivo pelo qual eles não implementaram o gerador em relação à função de seta.
Mas, se eu fosse um deles, poderia ter pensado assim:
const generator = gen param => ... // hmm, gen indicates a generator
const generator = gen () => ... // ^^
Parece que temos a função assíncrona:
const asyncFunction = async () => ... // pretty cool
Como, com a função normal, a palavra - chave assíncrona existe, a função de seta a está utilizando - async () =>
é provável que pareça async function()
.
Mas, não existe palavra-chave como gen
ou generator
e, infelizmente, a função de seta não a está usando.
Concluir:
Mesmo que eles desejem implementar o gerador na função de seta, acho que precisam repensar a sintaxe do gerador no núcleo js:
generator function myfunc() {}
// rather than
function* myfunc() {} // or, function *myfunc() {}
E isso será um grande erro. Portanto, manter a função da seta fora do gerador é muito legal.
Seguindo o comentário da @Bergi :
Não. As funções de seta devem ser leves (e não possuem um protótipo, por exemplo) e, geralmente, uma linha, enquanto os geradores são praticamente o oposto.
Eu direi que o propósito do gerador a ser usado é executar, parar, executar e, portanto, acho que não precisamos nos preocupar com protótipos, lexicais, etc.
function*
declaração (palavra-chave da função seguida por um asterisco) define uma função do gerador."