Em JavaScript os generators retornam um objeto do tipo Generator. Este objeto possui um método chamado next() que retorna um objeto contendo as propriedades done e value.
- done = true indica que o iterador já chegou ao fim da sequencia a ser iterada, done = false indica que ha mais valores a serem produzidos na sequencia.
- value é o valor retornado pelo iterador.
O generator possui uma expressão yield, que quando atingida, retorna o novo valor do generator e pausa a execução da função. Então, da próxima vez que next() é chamado o fluxo continua a partir da chamada de yield até que não haja mais um valor para retornar. O estado da função é mantido a cada chamada.
Um generator é caracterizado pelo asterisco após a palavra chave function e pelo uso da expressão yield.
Neste exemplo criaremos um generator que gera a sequencia de fibonacci.
function* fibonacci() {
var a = 0;
var b = 1;
yield a;
yield b;
while(true) {
var f = a + b;
a = b;
b = f;
yield f;
}
}
var generator = fibonacci();
generator.next(); // {value: 0, done: false}
generator.next(); // {value: 1, done: false}
generator.next(); // {value: 1, done: false}
generator.next(); // {value: 2, done: false}
generator.next(); // {value: 3, done: false}
generator.next(); // {value: 5, done: false}
generator.next(); // {value: 8, done: false}
generator.next(); // {value: 13, done: false}
.......
.......
Espero que este post tenha sido útil.
Abraço
Nenhum comentário:
Postar um comentário