Um momento
Aula 01
Cursos / JavaScript: Funções Geradoras
Funções Geradoras do JavaScript (Generator Functions)

Summary

Resumo da Aula sobre Funções Geradoras em JavaScript

Nesta aula, aprendemos sobre funções geradoras (Generator Functions) no JavaScript, que são definidas com a palavra-chave function seguida de um asterisco (*). Essas funções têm a capacidade de serem interrompidas e retomadas, permitindo um fluxo de execução controlado.

Conceitos Básicos

  • Função Geradora: Criada com a sintaxe function*, onde o asterisco indica que se trata de uma função geradora.
  • Palavra-chave yield: Utilizada dentro da função geradora para pausar a execução e retornar um valor.

Criação e Uso de uma Função Geradora

  1. Definição:

    • Exemplo de função geradora:
      function* obtNumero() {
          yield 1;
          yield 2;
          yield 3;
      }
      
  2. Criação do Generator:

    • Ao chamar a função geradora, um objeto generator é retornado:
      const gen = obtNumero();
      
  3. Iteração:

    • O método .next() é utilizado para avançar a execução da função geradora, retornando um objeto com duas propriedades:
      • value: o valor retornado pelo yield.
      • done: um booleano que indica se a execução da função geradora foi completada.

Exemplo de Execução

  • Chamadas ao método .next():
    gen.next(); // { value: 1, done: false }
    gen.next(); // { value: 2, done: false }
    gen.next(); // { value: 3, done: false }
    gen.next(); // { value: undefined, done: true }
    

Quando não há mais valores para serem retornados, value será undefined e done será true, indicando o fim da execução.

Conclusão

  • As funções geradoras são uma forma poderosa e flexível de lidar com iterações em JavaScript.
  • Você deve armazenar o objeto gerador em uma variável e utilizar o método .next() repetidamente para obter todos os valores, até que a função chegue ao fim.

Obrigado por participar desta aula! Até a próxima!

Video Transcript

Nesta aula nós vamos aprender sobre funções geradoras no JavaScript. São as chamadas Generator Functions. Essas funções geradoras aparecem com a palavra Shabby Functions seguida do asterisco. Então, essa Function Asterisco são funções que podem ser interrupidas, isto é pausadas, e depois serem continuadas. Você pode interroper a função, e depois, se quiser, pode continuar a função depois. Então, vamos aprender essas funções geradoras. Para poder definir a função geradora, é só dizer Function seguida do asterisco. Vamos aqui no terminal, ou no terminal do Firefox. Vou fazer aqui uma função geradora bem simples para a gente ilustrar o seu uso. Vou chamar a função de obt número sem nenhum argumento, nenhum parâmetro lá na definição. Vou usar essa palavra Shave Yield com o número um, depois o outro Yield 2, Yield 3, para você ver o que vai acontecer. Eu defini essa função. Então, essa aqui é a função obt número, uma função geradora, porque tem o asterisco seguido da palavra Shave Função. Em função geradoras, tipicamente, você vai ver a palavra Shave Yield, que a gente vai aprender o que esse cara faz, e já, já. Então, essa função aqui, a gente vai Yield, o valor um, o valor dois, o valor três. Então, quando a gente chama obt número, uma função geradora, você vai obter o chamado generator, um objeto chamado generator, certo, de tipo generator. Esse objeto generator, ele conforma no, conforme com o protocolo, iterable, iterator. Certo? Então, tá certo, mas o que é que vai dar aí? Então, primeiro, quando você está usando a função gerador, primeiro você tem que botar esse cara, vamos botar numa variável aqui, vamos chamar de gen, porque quando a gente chama a função, obtém o generator. Então, eu chamei a variável de gen, abreviado para generator. Agora, quando a gente tem um generator, você tem a opção de falar, pegar o próximo comando da função. Você vai rodar a função, e a função vai começar aqui do começo, e quando vê a palavra Shave Yield, ela vai pegar o valor e vai retornar o valor e vai parar, então, para a execução. Então, vamos ver. Você vai digitar o nome da variável aqui que tem o generator, esse cara que vai estar armazenado, tem armazenado o generator, o gerador. A gerador tem uma função método chamado Next. Quando você chamar o método Next, o cara vai lá, começa aqui no começo da função, até chegar o palavra Shave Yield, pega o valor que foi dado ao Yield e retorna aqui. Tá certo? Vamos ver. Então, gen.Next foi até o primeiro Yield, pegou um, retorna um objeto cujo valor, propriedade value, é o 1, e tem outro propriedade chamado Done, para dizer se acabou de passar por todos os comandos da função, ou não. Certo? Sempre, quando você dá o ponto Next, retorna o objeto que tem o value, o valor que foi dado pelo Yield, e tem o Done, para dizer se acabou, tá no final da função, ou não. Agora, quando você dá o gen.Next de novo, vamos ver o que dá. Então, a função aqui tinha parado lá nesse cara, então vai continuar para o próximo Yield, a showYield, pega o valor dado pelo Yield, põe no objeto aqui e retorna o objeto, como ainda está aqui, ainda não terminou a função. Então, ele fala o Done, ainda está falso. Done significa se terminou. Aí você pode fazer o gen.De novo e vai dar no quê? Ele vai continuar, tinha parado aqui depois do 2, vai até o próximo, próxima linha aqui, próximo Yield, pega o valor 3, põe no objeto com propriedade value, e o Done ainda está falso porque parou aqui, ele não sabe ainda se chegou ao final. Finalmente, quando a gente diz gen.Next de novo, você nota que o value é undefined, e o Done se tornou true verdadeiro, por quê? Porque se você olhar aqui, ele estava no 3, chegou no final da função, tem mais nada para fazer, para dar, né, Yield. Então, o valor vai ser indefinido, porque não tem nada que retorna explicitamente. Então, o Done se torna true para indicar que terminou de correr toda a função. Certo? Então, é isso. Se você continuar dizendo gen.Next, ele sempre vai fazer a mesma coisa porque já terminou a função. Então, esse aqui é uma função geradora. Certo? Fica até o... Vamos revisar aqui. Função geradora é a palavra Java Function com asterisco. E a função geradora pode ser interrupida, isto é pausada e depois continuada. Então, quando a gente chama a função geradora, a gente obtém um objeto de generator. A gente põe o objeto aqui na variável para poder ficar chamando o ponto Next, esse método que nos permite continuar a percorrer a função. O Next vai até no próximo... Palava Java Yield, próximo statement aqui do Yield. E pega o valor, põe dentro do objeto com a propriedade value e o Done para significar se terminou de percorrer a função ou não. Aí você fica chamando Next, Next, Next todo o tempo até você chegar no fim quando o Done vira true. E neste caso aqui, o valor foi indefinido porque ele não retornou nada. Certo? Então, o detalhe é como você chama a function, você pega o objeto generator, aí você põe na variável e vai ter que ficar chamando o Next, Next, Next todo o tempo. Certo? Por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: