Generators are functions that can be exted and later re-entered. Seu contexto (bindings de variáveis) será salvo em reentrâncias.

Geradores em JavaScript — especialmente quando combinados com Promises — são uma ferramenta muito poderosa para programação assíncrona, pois mitigam — se não eliminam completamente — os problemas com callbacks, como Callback Hell e Inversão de Controle. Entretanto, uma solução ainda mais simples para esses problemas pode ser alcançada com funções assíncronas.

Chamar uma função geradora não executa seu corpo imediatamente; um objeto iterador para a função é retornado em seu lugar. Quando o método do iterador next() é chamado, o corpo da função geradora é executado até a primeira expressão yield, que especifica o valor a ser retornado do iterador ou, com yield*, delega a outra função geradora. O método next() retorna um objeto com uma propriedade value contendo o valor renderizado e uma propriedade done que indica se o gerador produziu seu último valor, como um booleano. Chamando o método next() com um argumento irá retomar a execução da função do gerador, substituindo a expressão yield onde uma execução foi pausada pelo argumento de next().

A return comando em um gerador, quando executado, fará com que o gerador termine (ou seja, a propriedade done do objeto retornado por ele será definida como true). Se um valor for retornado, ele será definido como a propriedade value do objeto retornado pelo gerador.
Tal como uma declaração return, um erro é lançado dentro do gerador fará com que o gerador termine — a menos que seja pego dentro do corpo do gerador.
Quando um gerador terminar, chamadas subsequentes next() não executarão nenhum código desse gerador, elas apenas retornarão um objeto desse formulário: {value: undefined, done: true}.

Deixe uma resposta

O seu endereço de email não será publicado.