Рубрики
Без рубрики

JavaScript – Endendendo Generators EM 3 minutos

UMA Forma Prática de Armender Sobre Generators. Помечено JavaScript, Generators, Node, Advanced.

Джераментинг Não Se Fala Tanto Sobre O Генераторы Отказ Isso Ocorre Porque Easkem Poucos Cenários Em que realmente deseja usá-lo.

Нет Entanto, Isso Nega Utilidade Do Recurso – Porque Quando rsues Cenários Acabam Surgindo, Você FiCará Feliz Em Ter O Генератор Эм Сэю Curículo.

COMO A Maioria Das Coisas EM Programação, O Генератор É apenas Ума Феррамент; Nesse Caso, Ума Феррамент Эспециализация.

Vamos Dar UMA OLHADA EM EMMEPLO DE генератор EM Ação E Percorreer CADA ETAPA E VR COMO ESTA FUNCINANDO:

function* firstGenerator(range){ 
    let i = 0;
    while(i < range) { 
        i+= 1;
        yield i;
    }
}

Aqui Está um Генератор определенный. VOCOPERBERA QUE E MUITO SEMELHANTE UMA Função Normal, Exceto Pelo Fato de Termos UM * е урожай . О * Informa Ao JavaScript Que Esta É UMA Função Geradora.

Discutiremos o урожай Эм Гм Минуто.

Primeiro, Vamos Mastrar Urs Exemplo Do Gerador Em Ação:

let iterator = firstGenerator(3)
iterator // Object [Generator] {}
iterator.next() // { value: 1, done: false }       
iterator.next() // { value: 2, done: false }       
iterator.next() // { value: 3, done: false }       
iterator.next() // { value: undefined, done: true }

NOSSO FirstGenerator Retornou UM Итератор Dando Acesso UM Próximo Método.

CADA VEZ QUE CHAMAMOS O Следующий Nossa Função Executará o Código Até Encontrar UMA Deckaração de RendiMento ( Урожай ). QUANDO ENCONTRAMOS UMA DECKARACHãO de RendiMento, Interromperemos A Execução Até Que Próxima Seja Chamada Novamente. Quando o justgenerator Terminar A Execução, на Próxima Vez Que Chamarmos Следующий Nós Commeremos UM Objeto Que Tenha Uma Shave сделано Comm доблесть indefido como правда Отказ

Bem Maneiro Né?

BEM, O Retorno Do Итератор Realmente NoS Premate Fazer Mais Do que Apenas Isso. Também Temos Acesso a Instruções como для ... из BEM COMO Automos Métodos de iteração, Como O Operador распространять :

let iterator2 = firstGenerator(3);
for( const item of iterator2 ) { 
    console.log(item)
}

Agora Que Sabemos O Básico Sobre O Uso de GeraDores, Vamos Ver Alguns Casos de Uso.

Um Caso de Uso Comum Seria Manter O Estado de Um Gerador de Id Baseado Em rit Indice.

Digamos Que Temos um карта/объект de iTens e queremos expor uma função que que que que um Усуарио Adicione UM Предмет Esse Mapa, элемент CADA DEVE TER ID EXCLESIVO COM BASE NA Ordem Que Foi Inserido.

Podemos Gerar Essa Inslução de Geração de Ids Усандо генераторы

function* idGenerator(){ 
    let i = 0;
    while(true) { 
        i += 1;
        yield `id-${i}`
    }
}

const ourItems = {};
const ourIdGenerator = idGenerator();

function addItem(item) {
    const id = ourIdGenerator.next()
    ourItems[id] = { id, item }
}

addItem('valor a ser guardado')

Outro Exemplo Seria Abstrair O UX поток Em Uma única Função.

Представьте себе que temos um design de ux; UM Usuário Clica Em Um Botão, Depois Fazemos Alguns Cálculos; DEPOIS QUE OS Cálculos Terminam, Queremos Mastrar Outro Botão; Depois de Clicar Nesse Botão, Fazemos Mais Alguns Cálculos E Então Atualizamos janela.

Poderíamos Colocar Tudo Isso Em Uma única Função, Mas Pode FiCar Bem Confuso.

EM VEZ Disso, Como SabeMos Ордем Na Qual Nosso Design Flui, Podemos Usar Генераторы :

function* UXDesignFlow(){ 
    yield showFirstButton();
    yield showSecondButton();
    yield window.location.reload();
}


function mainApp() { 
    const uxIterator = UXDesignFlow();

    uxIterator.next();
    firstButton.on('click', () => uxIterator.next() )
    secondButton.on('click', () => uxIterator.next() )
}

Нет Exemplo Acima, isolamos com êxito nosso fluco de design e nossa lógica. ISSO FACILITA O TESTE, LEGIBILIDADE E, следствие, Manutenção.

CADA VEZ QUE TENCEMOS NOSSOS CALCULOS, MOSTRAMOS A PROUXIMA ETAPA NA интерфейс Usuário.

Вывод

NA MAOIOIA DAS VEZES VOCO NãO VAI PRECISAR DE GERADORES, MAS, QUANDO PRECISA FICARA TELIZ EM TER ISSO NA SUA SUAT, ELE AJUDA A abstrair Interações e Fornecem UMA Solução Limpa Para Quanto é NeavaRio UMA Execução Mais Lenta Dos Valores SolitCitaDos.

Вывод из тренатора.

Esse Artigo é UMA Tradução Quase Que Direta сделать Artigo Оригинал EM Inglês нет среды.

Оригинал: “https://dev.to/kurybr/entendendo-javascript-generators-em-3-minutos-235m”